/*******************************************************************************
 * Copyright (c) 2018, College of William & Mary
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *     * Redistributions of source code must retain the above copyright
 *       notice, this list of conditions and the following disclaimer.
 *     * Redistributions in binary form must reproduce the above copyright
 *       notice, this list of conditions and the following disclaimer in the
 *       documentation and/or other materials provided with the distribution.
 *     * Neither the name of the College of William & Mary nor the
 *       names of its contributors may be used to endorse or promote products
 *       derived from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED. IN NO EVENT SHALL THE COLLEGE OF WILLIAM & MARY BE LIABLE FOR ANY
 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * PRIMME: https://github.com/primme/primme
 * Contact: Andreas Stathopoulos, a n d r e a s _at_ c s . w m . e d u
 *******************************************************************************
 *   NOTE: THIS FILE IS AUTOMATICALLY GENERATED. PLEASE DON'T MODIFY
 ******************************************************************************/


#ifndef auxiliary_H
#define auxiliary_H
#if !defined(CHECK_TEMPLATE) && !defined(Num_matrix_astype_Sprimme)
#  define Num_matrix_astype_Sprimme CONCAT(Num_matrix_astype_,SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_matrix_astype_Rprimme)
#  define Num_matrix_astype_Rprimme CONCAT(Num_matrix_astype_,REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_matrix_astype_SHprimme)
#  define Num_matrix_astype_SHprimme CONCAT(Num_matrix_astype_,HOST_SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_matrix_astype_RHprimme)
#  define Num_matrix_astype_RHprimme CONCAT(Num_matrix_astype_,HOST_REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_matrix_astype_SXprimme)
#  define Num_matrix_astype_SXprimme CONCAT(Num_matrix_astype_,XSCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_matrix_astype_RXprimme)
#  define Num_matrix_astype_RXprimme CONCAT(Num_matrix_astype_,XREAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_matrix_astype_Shprimme)
#  define Num_matrix_astype_Shprimme CONCAT(Num_matrix_astype_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_matrix_astype_Rhprimme)
#  define Num_matrix_astype_Rhprimme CONCAT(Num_matrix_astype_,CONCAT(CONCAT(CONCAT(STEM_C,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_matrix_astype_Ssprimme)
#  define Num_matrix_astype_Ssprimme CONCAT(Num_matrix_astype_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_matrix_astype_Rsprimme)
#  define Num_matrix_astype_Rsprimme CONCAT(Num_matrix_astype_,CONCAT(CONCAT(CONCAT(STEM_C,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_matrix_astype_Sdprimme)
#  define Num_matrix_astype_Sdprimme CONCAT(Num_matrix_astype_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_matrix_astype_Rdprimme)
#  define Num_matrix_astype_Rdprimme CONCAT(Num_matrix_astype_,CONCAT(CONCAT(CONCAT(STEM_C,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_matrix_astype_Sqprimme)
#  define Num_matrix_astype_Sqprimme CONCAT(Num_matrix_astype_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_matrix_astype_Rqprimme)
#  define Num_matrix_astype_Rqprimme CONCAT(Num_matrix_astype_,CONCAT(CONCAT(CONCAT(STEM_C,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_matrix_astype_SXhprimme)
#  define Num_matrix_astype_SXhprimme CONCAT(Num_matrix_astype_,CONCAT(CONCAT(CONCAT(,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_matrix_astype_RXhprimme)
#  define Num_matrix_astype_RXhprimme CONCAT(Num_matrix_astype_,CONCAT(CONCAT(CONCAT(,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_matrix_astype_SXsprimme)
#  define Num_matrix_astype_SXsprimme CONCAT(Num_matrix_astype_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_matrix_astype_RXsprimme)
#  define Num_matrix_astype_RXsprimme CONCAT(Num_matrix_astype_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_matrix_astype_SXdprimme)
#  define Num_matrix_astype_SXdprimme CONCAT(Num_matrix_astype_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_matrix_astype_RXdprimme)
#  define Num_matrix_astype_RXdprimme CONCAT(Num_matrix_astype_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_matrix_astype_SXqprimme)
#  define Num_matrix_astype_SXqprimme CONCAT(Num_matrix_astype_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_matrix_astype_RXqprimme)
#  define Num_matrix_astype_RXqprimme CONCAT(Num_matrix_astype_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_matrix_astype_SHhprimme)
#  define Num_matrix_astype_SHhprimme CONCAT(Num_matrix_astype_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_matrix_astype_RHhprimme)
#  define Num_matrix_astype_RHhprimme CONCAT(Num_matrix_astype_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_matrix_astype_SHsprimme)
#  define Num_matrix_astype_SHsprimme CONCAT(Num_matrix_astype_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_matrix_astype_RHsprimme)
#  define Num_matrix_astype_RHsprimme CONCAT(Num_matrix_astype_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_matrix_astype_SHdprimme)
#  define Num_matrix_astype_SHdprimme CONCAT(Num_matrix_astype_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_matrix_astype_RHdprimme)
#  define Num_matrix_astype_RHdprimme CONCAT(Num_matrix_astype_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_matrix_astype_SHqprimme)
#  define Num_matrix_astype_SHqprimme CONCAT(Num_matrix_astype_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_matrix_astype_RHqprimme)
#  define Num_matrix_astype_RHqprimme CONCAT(Num_matrix_astype_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
int Num_matrix_astype_dprimme(void *x, PRIMME_INT m, PRIMME_INT n,
      PRIMME_INT ldx, primme_op_datatype xt, void **y, PRIMME_INT *ldy,
      primme_op_datatype yt, int do_alloc, int do_copy, primme_context ctx);
#if !defined(CHECK_TEMPLATE) && !defined(Num_matrix_astype_iprimmeSprimme)
#  define Num_matrix_astype_iprimmeSprimme CONCAT(Num_matrix_astype_iprimme,SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_matrix_astype_iprimmeRprimme)
#  define Num_matrix_astype_iprimmeRprimme CONCAT(Num_matrix_astype_iprimme,REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_matrix_astype_iprimmeSHprimme)
#  define Num_matrix_astype_iprimmeSHprimme CONCAT(Num_matrix_astype_iprimme,HOST_SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_matrix_astype_iprimmeRHprimme)
#  define Num_matrix_astype_iprimmeRHprimme CONCAT(Num_matrix_astype_iprimme,HOST_REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_matrix_astype_iprimmeSXprimme)
#  define Num_matrix_astype_iprimmeSXprimme CONCAT(Num_matrix_astype_iprimme,XSCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_matrix_astype_iprimmeRXprimme)
#  define Num_matrix_astype_iprimmeRXprimme CONCAT(Num_matrix_astype_iprimme,XREAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_matrix_astype_iprimmeShprimme)
#  define Num_matrix_astype_iprimmeShprimme CONCAT(Num_matrix_astype_iprimme,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_matrix_astype_iprimmeRhprimme)
#  define Num_matrix_astype_iprimmeRhprimme CONCAT(Num_matrix_astype_iprimme,CONCAT(CONCAT(CONCAT(STEM_C,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_matrix_astype_iprimmeSsprimme)
#  define Num_matrix_astype_iprimmeSsprimme CONCAT(Num_matrix_astype_iprimme,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_matrix_astype_iprimmeRsprimme)
#  define Num_matrix_astype_iprimmeRsprimme CONCAT(Num_matrix_astype_iprimme,CONCAT(CONCAT(CONCAT(STEM_C,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_matrix_astype_iprimmeSdprimme)
#  define Num_matrix_astype_iprimmeSdprimme CONCAT(Num_matrix_astype_iprimme,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_matrix_astype_iprimmeRdprimme)
#  define Num_matrix_astype_iprimmeRdprimme CONCAT(Num_matrix_astype_iprimme,CONCAT(CONCAT(CONCAT(STEM_C,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_matrix_astype_iprimmeSqprimme)
#  define Num_matrix_astype_iprimmeSqprimme CONCAT(Num_matrix_astype_iprimme,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_matrix_astype_iprimmeRqprimme)
#  define Num_matrix_astype_iprimmeRqprimme CONCAT(Num_matrix_astype_iprimme,CONCAT(CONCAT(CONCAT(STEM_C,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_matrix_astype_iprimmeSXhprimme)
#  define Num_matrix_astype_iprimmeSXhprimme CONCAT(Num_matrix_astype_iprimme,CONCAT(CONCAT(CONCAT(,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_matrix_astype_iprimmeRXhprimme)
#  define Num_matrix_astype_iprimmeRXhprimme CONCAT(Num_matrix_astype_iprimme,CONCAT(CONCAT(CONCAT(,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_matrix_astype_iprimmeSXsprimme)
#  define Num_matrix_astype_iprimmeSXsprimme CONCAT(Num_matrix_astype_iprimme,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_matrix_astype_iprimmeRXsprimme)
#  define Num_matrix_astype_iprimmeRXsprimme CONCAT(Num_matrix_astype_iprimme,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_matrix_astype_iprimmeSXdprimme)
#  define Num_matrix_astype_iprimmeSXdprimme CONCAT(Num_matrix_astype_iprimme,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_matrix_astype_iprimmeRXdprimme)
#  define Num_matrix_astype_iprimmeRXdprimme CONCAT(Num_matrix_astype_iprimme,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_matrix_astype_iprimmeSXqprimme)
#  define Num_matrix_astype_iprimmeSXqprimme CONCAT(Num_matrix_astype_iprimme,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_matrix_astype_iprimmeRXqprimme)
#  define Num_matrix_astype_iprimmeRXqprimme CONCAT(Num_matrix_astype_iprimme,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_matrix_astype_iprimmeSHhprimme)
#  define Num_matrix_astype_iprimmeSHhprimme CONCAT(Num_matrix_astype_iprimme,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_matrix_astype_iprimmeRHhprimme)
#  define Num_matrix_astype_iprimmeRHhprimme CONCAT(Num_matrix_astype_iprimme,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_matrix_astype_iprimmeSHsprimme)
#  define Num_matrix_astype_iprimmeSHsprimme CONCAT(Num_matrix_astype_iprimme,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_matrix_astype_iprimmeRHsprimme)
#  define Num_matrix_astype_iprimmeRHsprimme CONCAT(Num_matrix_astype_iprimme,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_matrix_astype_iprimmeSHdprimme)
#  define Num_matrix_astype_iprimmeSHdprimme CONCAT(Num_matrix_astype_iprimme,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_matrix_astype_iprimmeRHdprimme)
#  define Num_matrix_astype_iprimmeRHdprimme CONCAT(Num_matrix_astype_iprimme,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_matrix_astype_iprimmeSHqprimme)
#  define Num_matrix_astype_iprimmeSHqprimme CONCAT(Num_matrix_astype_iprimme,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_matrix_astype_iprimmeRHqprimme)
#  define Num_matrix_astype_iprimmeRHqprimme CONCAT(Num_matrix_astype_iprimme,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
int Num_matrix_astype_iprimme(void *x, PRIMME_INT m, PRIMME_INT n,
      PRIMME_INT ldx, primme_op_datatype xt, void **y, PRIMME_INT *ldy,
      primme_op_datatype yt, int do_alloc, int do_copy, primme_context ctx);
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_astype_Sprimme)
#  define Num_copy_matrix_astype_Sprimme CONCAT(Num_copy_matrix_astype_,SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_astype_Rprimme)
#  define Num_copy_matrix_astype_Rprimme CONCAT(Num_copy_matrix_astype_,REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_astype_SHprimme)
#  define Num_copy_matrix_astype_SHprimme CONCAT(Num_copy_matrix_astype_,HOST_SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_astype_RHprimme)
#  define Num_copy_matrix_astype_RHprimme CONCAT(Num_copy_matrix_astype_,HOST_REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_astype_SXprimme)
#  define Num_copy_matrix_astype_SXprimme CONCAT(Num_copy_matrix_astype_,XSCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_astype_RXprimme)
#  define Num_copy_matrix_astype_RXprimme CONCAT(Num_copy_matrix_astype_,XREAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_astype_Shprimme)
#  define Num_copy_matrix_astype_Shprimme CONCAT(Num_copy_matrix_astype_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_astype_Rhprimme)
#  define Num_copy_matrix_astype_Rhprimme CONCAT(Num_copy_matrix_astype_,CONCAT(CONCAT(CONCAT(STEM_C,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_astype_Ssprimme)
#  define Num_copy_matrix_astype_Ssprimme CONCAT(Num_copy_matrix_astype_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_astype_Rsprimme)
#  define Num_copy_matrix_astype_Rsprimme CONCAT(Num_copy_matrix_astype_,CONCAT(CONCAT(CONCAT(STEM_C,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_astype_Sdprimme)
#  define Num_copy_matrix_astype_Sdprimme CONCAT(Num_copy_matrix_astype_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_astype_Rdprimme)
#  define Num_copy_matrix_astype_Rdprimme CONCAT(Num_copy_matrix_astype_,CONCAT(CONCAT(CONCAT(STEM_C,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_astype_Sqprimme)
#  define Num_copy_matrix_astype_Sqprimme CONCAT(Num_copy_matrix_astype_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_astype_Rqprimme)
#  define Num_copy_matrix_astype_Rqprimme CONCAT(Num_copy_matrix_astype_,CONCAT(CONCAT(CONCAT(STEM_C,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_astype_SXhprimme)
#  define Num_copy_matrix_astype_SXhprimme CONCAT(Num_copy_matrix_astype_,CONCAT(CONCAT(CONCAT(,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_astype_RXhprimme)
#  define Num_copy_matrix_astype_RXhprimme CONCAT(Num_copy_matrix_astype_,CONCAT(CONCAT(CONCAT(,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_astype_SXsprimme)
#  define Num_copy_matrix_astype_SXsprimme CONCAT(Num_copy_matrix_astype_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_astype_RXsprimme)
#  define Num_copy_matrix_astype_RXsprimme CONCAT(Num_copy_matrix_astype_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_astype_SXdprimme)
#  define Num_copy_matrix_astype_SXdprimme CONCAT(Num_copy_matrix_astype_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_astype_RXdprimme)
#  define Num_copy_matrix_astype_RXdprimme CONCAT(Num_copy_matrix_astype_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_astype_SXqprimme)
#  define Num_copy_matrix_astype_SXqprimme CONCAT(Num_copy_matrix_astype_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_astype_RXqprimme)
#  define Num_copy_matrix_astype_RXqprimme CONCAT(Num_copy_matrix_astype_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_astype_SHhprimme)
#  define Num_copy_matrix_astype_SHhprimme CONCAT(Num_copy_matrix_astype_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_astype_RHhprimme)
#  define Num_copy_matrix_astype_RHhprimme CONCAT(Num_copy_matrix_astype_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_astype_SHsprimme)
#  define Num_copy_matrix_astype_SHsprimme CONCAT(Num_copy_matrix_astype_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_astype_RHsprimme)
#  define Num_copy_matrix_astype_RHsprimme CONCAT(Num_copy_matrix_astype_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_astype_SHdprimme)
#  define Num_copy_matrix_astype_SHdprimme CONCAT(Num_copy_matrix_astype_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_astype_RHdprimme)
#  define Num_copy_matrix_astype_RHdprimme CONCAT(Num_copy_matrix_astype_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_astype_SHqprimme)
#  define Num_copy_matrix_astype_SHqprimme CONCAT(Num_copy_matrix_astype_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_astype_RHqprimme)
#  define Num_copy_matrix_astype_RHqprimme CONCAT(Num_copy_matrix_astype_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
int Num_copy_matrix_astype_dprimme(void *x, PRIMME_INT xm0, PRIMME_INT xn0,
      PRIMME_INT m, PRIMME_INT n, PRIMME_INT ldx, primme_op_datatype xt,
      void *y, PRIMME_INT ym0, PRIMME_INT yn0, PRIMME_INT ldy,
      primme_op_datatype yt, primme_context ctx);
#if !defined(CHECK_TEMPLATE) && !defined(Num_sizeof_Sprimme)
#  define Num_sizeof_Sprimme CONCAT(Num_sizeof_,SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_sizeof_Rprimme)
#  define Num_sizeof_Rprimme CONCAT(Num_sizeof_,REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_sizeof_SHprimme)
#  define Num_sizeof_SHprimme CONCAT(Num_sizeof_,HOST_SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_sizeof_RHprimme)
#  define Num_sizeof_RHprimme CONCAT(Num_sizeof_,HOST_REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_sizeof_SXprimme)
#  define Num_sizeof_SXprimme CONCAT(Num_sizeof_,XSCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_sizeof_RXprimme)
#  define Num_sizeof_RXprimme CONCAT(Num_sizeof_,XREAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_sizeof_Shprimme)
#  define Num_sizeof_Shprimme CONCAT(Num_sizeof_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_sizeof_Rhprimme)
#  define Num_sizeof_Rhprimme CONCAT(Num_sizeof_,CONCAT(CONCAT(CONCAT(STEM_C,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_sizeof_Ssprimme)
#  define Num_sizeof_Ssprimme CONCAT(Num_sizeof_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_sizeof_Rsprimme)
#  define Num_sizeof_Rsprimme CONCAT(Num_sizeof_,CONCAT(CONCAT(CONCAT(STEM_C,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_sizeof_Sdprimme)
#  define Num_sizeof_Sdprimme CONCAT(Num_sizeof_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_sizeof_Rdprimme)
#  define Num_sizeof_Rdprimme CONCAT(Num_sizeof_,CONCAT(CONCAT(CONCAT(STEM_C,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_sizeof_Sqprimme)
#  define Num_sizeof_Sqprimme CONCAT(Num_sizeof_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_sizeof_Rqprimme)
#  define Num_sizeof_Rqprimme CONCAT(Num_sizeof_,CONCAT(CONCAT(CONCAT(STEM_C,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_sizeof_SXhprimme)
#  define Num_sizeof_SXhprimme CONCAT(Num_sizeof_,CONCAT(CONCAT(CONCAT(,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_sizeof_RXhprimme)
#  define Num_sizeof_RXhprimme CONCAT(Num_sizeof_,CONCAT(CONCAT(CONCAT(,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_sizeof_SXsprimme)
#  define Num_sizeof_SXsprimme CONCAT(Num_sizeof_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_sizeof_RXsprimme)
#  define Num_sizeof_RXsprimme CONCAT(Num_sizeof_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_sizeof_SXdprimme)
#  define Num_sizeof_SXdprimme CONCAT(Num_sizeof_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_sizeof_RXdprimme)
#  define Num_sizeof_RXdprimme CONCAT(Num_sizeof_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_sizeof_SXqprimme)
#  define Num_sizeof_SXqprimme CONCAT(Num_sizeof_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_sizeof_RXqprimme)
#  define Num_sizeof_RXqprimme CONCAT(Num_sizeof_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_sizeof_SHhprimme)
#  define Num_sizeof_SHhprimme CONCAT(Num_sizeof_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_sizeof_RHhprimme)
#  define Num_sizeof_RHhprimme CONCAT(Num_sizeof_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_sizeof_SHsprimme)
#  define Num_sizeof_SHsprimme CONCAT(Num_sizeof_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_sizeof_RHsprimme)
#  define Num_sizeof_RHsprimme CONCAT(Num_sizeof_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_sizeof_SHdprimme)
#  define Num_sizeof_SHdprimme CONCAT(Num_sizeof_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_sizeof_RHdprimme)
#  define Num_sizeof_RHdprimme CONCAT(Num_sizeof_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_sizeof_SHqprimme)
#  define Num_sizeof_SHqprimme CONCAT(Num_sizeof_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_sizeof_RHqprimme)
#  define Num_sizeof_RHqprimme CONCAT(Num_sizeof_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
int Num_sizeof_dprimme(primme_op_datatype t, size_t *s);
#if !defined(CHECK_TEMPLATE) && !defined(Num_machine_epsilon_Sprimme)
#  define Num_machine_epsilon_Sprimme CONCAT(Num_machine_epsilon_,SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_machine_epsilon_Rprimme)
#  define Num_machine_epsilon_Rprimme CONCAT(Num_machine_epsilon_,REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_machine_epsilon_SHprimme)
#  define Num_machine_epsilon_SHprimme CONCAT(Num_machine_epsilon_,HOST_SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_machine_epsilon_RHprimme)
#  define Num_machine_epsilon_RHprimme CONCAT(Num_machine_epsilon_,HOST_REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_machine_epsilon_SXprimme)
#  define Num_machine_epsilon_SXprimme CONCAT(Num_machine_epsilon_,XSCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_machine_epsilon_RXprimme)
#  define Num_machine_epsilon_RXprimme CONCAT(Num_machine_epsilon_,XREAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_machine_epsilon_Shprimme)
#  define Num_machine_epsilon_Shprimme CONCAT(Num_machine_epsilon_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_machine_epsilon_Rhprimme)
#  define Num_machine_epsilon_Rhprimme CONCAT(Num_machine_epsilon_,CONCAT(CONCAT(CONCAT(STEM_C,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_machine_epsilon_Ssprimme)
#  define Num_machine_epsilon_Ssprimme CONCAT(Num_machine_epsilon_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_machine_epsilon_Rsprimme)
#  define Num_machine_epsilon_Rsprimme CONCAT(Num_machine_epsilon_,CONCAT(CONCAT(CONCAT(STEM_C,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_machine_epsilon_Sdprimme)
#  define Num_machine_epsilon_Sdprimme CONCAT(Num_machine_epsilon_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_machine_epsilon_Rdprimme)
#  define Num_machine_epsilon_Rdprimme CONCAT(Num_machine_epsilon_,CONCAT(CONCAT(CONCAT(STEM_C,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_machine_epsilon_Sqprimme)
#  define Num_machine_epsilon_Sqprimme CONCAT(Num_machine_epsilon_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_machine_epsilon_Rqprimme)
#  define Num_machine_epsilon_Rqprimme CONCAT(Num_machine_epsilon_,CONCAT(CONCAT(CONCAT(STEM_C,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_machine_epsilon_SXhprimme)
#  define Num_machine_epsilon_SXhprimme CONCAT(Num_machine_epsilon_,CONCAT(CONCAT(CONCAT(,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_machine_epsilon_RXhprimme)
#  define Num_machine_epsilon_RXhprimme CONCAT(Num_machine_epsilon_,CONCAT(CONCAT(CONCAT(,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_machine_epsilon_SXsprimme)
#  define Num_machine_epsilon_SXsprimme CONCAT(Num_machine_epsilon_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_machine_epsilon_RXsprimme)
#  define Num_machine_epsilon_RXsprimme CONCAT(Num_machine_epsilon_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_machine_epsilon_SXdprimme)
#  define Num_machine_epsilon_SXdprimme CONCAT(Num_machine_epsilon_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_machine_epsilon_RXdprimme)
#  define Num_machine_epsilon_RXdprimme CONCAT(Num_machine_epsilon_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_machine_epsilon_SXqprimme)
#  define Num_machine_epsilon_SXqprimme CONCAT(Num_machine_epsilon_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_machine_epsilon_RXqprimme)
#  define Num_machine_epsilon_RXqprimme CONCAT(Num_machine_epsilon_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_machine_epsilon_SHhprimme)
#  define Num_machine_epsilon_SHhprimme CONCAT(Num_machine_epsilon_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_machine_epsilon_RHhprimme)
#  define Num_machine_epsilon_RHhprimme CONCAT(Num_machine_epsilon_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_machine_epsilon_SHsprimme)
#  define Num_machine_epsilon_SHsprimme CONCAT(Num_machine_epsilon_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_machine_epsilon_RHsprimme)
#  define Num_machine_epsilon_RHsprimme CONCAT(Num_machine_epsilon_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_machine_epsilon_SHdprimme)
#  define Num_machine_epsilon_SHdprimme CONCAT(Num_machine_epsilon_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_machine_epsilon_RHdprimme)
#  define Num_machine_epsilon_RHdprimme CONCAT(Num_machine_epsilon_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_machine_epsilon_SHqprimme)
#  define Num_machine_epsilon_SHqprimme CONCAT(Num_machine_epsilon_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_machine_epsilon_RHqprimme)
#  define Num_machine_epsilon_RHqprimme CONCAT(Num_machine_epsilon_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
int Num_machine_epsilon_dprimme(primme_op_datatype t, double *eps);
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_conj_Sprimme)
#  define Num_copy_matrix_conj_Sprimme CONCAT(Num_copy_matrix_conj_,SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_conj_Rprimme)
#  define Num_copy_matrix_conj_Rprimme CONCAT(Num_copy_matrix_conj_,REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_conj_SHprimme)
#  define Num_copy_matrix_conj_SHprimme CONCAT(Num_copy_matrix_conj_,HOST_SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_conj_RHprimme)
#  define Num_copy_matrix_conj_RHprimme CONCAT(Num_copy_matrix_conj_,HOST_REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_conj_SXprimme)
#  define Num_copy_matrix_conj_SXprimme CONCAT(Num_copy_matrix_conj_,XSCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_conj_RXprimme)
#  define Num_copy_matrix_conj_RXprimme CONCAT(Num_copy_matrix_conj_,XREAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_conj_Shprimme)
#  define Num_copy_matrix_conj_Shprimme CONCAT(Num_copy_matrix_conj_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_conj_Rhprimme)
#  define Num_copy_matrix_conj_Rhprimme CONCAT(Num_copy_matrix_conj_,CONCAT(CONCAT(CONCAT(STEM_C,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_conj_Ssprimme)
#  define Num_copy_matrix_conj_Ssprimme CONCAT(Num_copy_matrix_conj_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_conj_Rsprimme)
#  define Num_copy_matrix_conj_Rsprimme CONCAT(Num_copy_matrix_conj_,CONCAT(CONCAT(CONCAT(STEM_C,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_conj_Sdprimme)
#  define Num_copy_matrix_conj_Sdprimme CONCAT(Num_copy_matrix_conj_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_conj_Rdprimme)
#  define Num_copy_matrix_conj_Rdprimme CONCAT(Num_copy_matrix_conj_,CONCAT(CONCAT(CONCAT(STEM_C,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_conj_Sqprimme)
#  define Num_copy_matrix_conj_Sqprimme CONCAT(Num_copy_matrix_conj_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_conj_Rqprimme)
#  define Num_copy_matrix_conj_Rqprimme CONCAT(Num_copy_matrix_conj_,CONCAT(CONCAT(CONCAT(STEM_C,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_conj_SXhprimme)
#  define Num_copy_matrix_conj_SXhprimme CONCAT(Num_copy_matrix_conj_,CONCAT(CONCAT(CONCAT(,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_conj_RXhprimme)
#  define Num_copy_matrix_conj_RXhprimme CONCAT(Num_copy_matrix_conj_,CONCAT(CONCAT(CONCAT(,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_conj_SXsprimme)
#  define Num_copy_matrix_conj_SXsprimme CONCAT(Num_copy_matrix_conj_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_conj_RXsprimme)
#  define Num_copy_matrix_conj_RXsprimme CONCAT(Num_copy_matrix_conj_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_conj_SXdprimme)
#  define Num_copy_matrix_conj_SXdprimme CONCAT(Num_copy_matrix_conj_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_conj_RXdprimme)
#  define Num_copy_matrix_conj_RXdprimme CONCAT(Num_copy_matrix_conj_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_conj_SXqprimme)
#  define Num_copy_matrix_conj_SXqprimme CONCAT(Num_copy_matrix_conj_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_conj_RXqprimme)
#  define Num_copy_matrix_conj_RXqprimme CONCAT(Num_copy_matrix_conj_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_conj_SHhprimme)
#  define Num_copy_matrix_conj_SHhprimme CONCAT(Num_copy_matrix_conj_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_conj_RHhprimme)
#  define Num_copy_matrix_conj_RHhprimme CONCAT(Num_copy_matrix_conj_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_conj_SHsprimme)
#  define Num_copy_matrix_conj_SHsprimme CONCAT(Num_copy_matrix_conj_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_conj_RHsprimme)
#  define Num_copy_matrix_conj_RHsprimme CONCAT(Num_copy_matrix_conj_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_conj_SHdprimme)
#  define Num_copy_matrix_conj_SHdprimme CONCAT(Num_copy_matrix_conj_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_conj_RHdprimme)
#  define Num_copy_matrix_conj_RHdprimme CONCAT(Num_copy_matrix_conj_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_conj_SHqprimme)
#  define Num_copy_matrix_conj_SHqprimme CONCAT(Num_copy_matrix_conj_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_conj_RHqprimme)
#  define Num_copy_matrix_conj_RHqprimme CONCAT(Num_copy_matrix_conj_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
int Num_copy_matrix_conj_dprimme(dummy_type_dprimme *x, PRIMME_INT m, PRIMME_INT n,
      PRIMME_INT ldx, dummy_type_dprimme *y, PRIMME_INT ldy, primme_context ctx);
#if !defined(CHECK_TEMPLATE) && !defined(Num_zero_matrix_TprimmeSprimme)
#  define Num_zero_matrix_TprimmeSprimme CONCAT(Num_zero_matrix_Tprimme,SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_zero_matrix_TprimmeRprimme)
#  define Num_zero_matrix_TprimmeRprimme CONCAT(Num_zero_matrix_Tprimme,REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_zero_matrix_TprimmeSHprimme)
#  define Num_zero_matrix_TprimmeSHprimme CONCAT(Num_zero_matrix_Tprimme,HOST_SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_zero_matrix_TprimmeRHprimme)
#  define Num_zero_matrix_TprimmeRHprimme CONCAT(Num_zero_matrix_Tprimme,HOST_REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_zero_matrix_TprimmeSXprimme)
#  define Num_zero_matrix_TprimmeSXprimme CONCAT(Num_zero_matrix_Tprimme,XSCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_zero_matrix_TprimmeRXprimme)
#  define Num_zero_matrix_TprimmeRXprimme CONCAT(Num_zero_matrix_Tprimme,XREAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_zero_matrix_TprimmeShprimme)
#  define Num_zero_matrix_TprimmeShprimme CONCAT(Num_zero_matrix_Tprimme,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_zero_matrix_TprimmeRhprimme)
#  define Num_zero_matrix_TprimmeRhprimme CONCAT(Num_zero_matrix_Tprimme,CONCAT(CONCAT(CONCAT(STEM_C,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_zero_matrix_TprimmeSsprimme)
#  define Num_zero_matrix_TprimmeSsprimme CONCAT(Num_zero_matrix_Tprimme,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_zero_matrix_TprimmeRsprimme)
#  define Num_zero_matrix_TprimmeRsprimme CONCAT(Num_zero_matrix_Tprimme,CONCAT(CONCAT(CONCAT(STEM_C,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_zero_matrix_TprimmeSdprimme)
#  define Num_zero_matrix_TprimmeSdprimme CONCAT(Num_zero_matrix_Tprimme,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_zero_matrix_TprimmeRdprimme)
#  define Num_zero_matrix_TprimmeRdprimme CONCAT(Num_zero_matrix_Tprimme,CONCAT(CONCAT(CONCAT(STEM_C,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_zero_matrix_TprimmeSqprimme)
#  define Num_zero_matrix_TprimmeSqprimme CONCAT(Num_zero_matrix_Tprimme,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_zero_matrix_TprimmeRqprimme)
#  define Num_zero_matrix_TprimmeRqprimme CONCAT(Num_zero_matrix_Tprimme,CONCAT(CONCAT(CONCAT(STEM_C,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_zero_matrix_TprimmeSXhprimme)
#  define Num_zero_matrix_TprimmeSXhprimme CONCAT(Num_zero_matrix_Tprimme,CONCAT(CONCAT(CONCAT(,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_zero_matrix_TprimmeRXhprimme)
#  define Num_zero_matrix_TprimmeRXhprimme CONCAT(Num_zero_matrix_Tprimme,CONCAT(CONCAT(CONCAT(,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_zero_matrix_TprimmeSXsprimme)
#  define Num_zero_matrix_TprimmeSXsprimme CONCAT(Num_zero_matrix_Tprimme,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_zero_matrix_TprimmeRXsprimme)
#  define Num_zero_matrix_TprimmeRXsprimme CONCAT(Num_zero_matrix_Tprimme,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_zero_matrix_TprimmeSXdprimme)
#  define Num_zero_matrix_TprimmeSXdprimme CONCAT(Num_zero_matrix_Tprimme,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_zero_matrix_TprimmeRXdprimme)
#  define Num_zero_matrix_TprimmeRXdprimme CONCAT(Num_zero_matrix_Tprimme,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_zero_matrix_TprimmeSXqprimme)
#  define Num_zero_matrix_TprimmeSXqprimme CONCAT(Num_zero_matrix_Tprimme,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_zero_matrix_TprimmeRXqprimme)
#  define Num_zero_matrix_TprimmeRXqprimme CONCAT(Num_zero_matrix_Tprimme,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_zero_matrix_TprimmeSHhprimme)
#  define Num_zero_matrix_TprimmeSHhprimme CONCAT(Num_zero_matrix_Tprimme,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_zero_matrix_TprimmeRHhprimme)
#  define Num_zero_matrix_TprimmeRHhprimme CONCAT(Num_zero_matrix_Tprimme,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_zero_matrix_TprimmeSHsprimme)
#  define Num_zero_matrix_TprimmeSHsprimme CONCAT(Num_zero_matrix_Tprimme,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_zero_matrix_TprimmeRHsprimme)
#  define Num_zero_matrix_TprimmeRHsprimme CONCAT(Num_zero_matrix_Tprimme,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_zero_matrix_TprimmeSHdprimme)
#  define Num_zero_matrix_TprimmeSHdprimme CONCAT(Num_zero_matrix_Tprimme,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_zero_matrix_TprimmeRHdprimme)
#  define Num_zero_matrix_TprimmeRHdprimme CONCAT(Num_zero_matrix_Tprimme,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_zero_matrix_TprimmeSHqprimme)
#  define Num_zero_matrix_TprimmeSHqprimme CONCAT(Num_zero_matrix_Tprimme,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_zero_matrix_TprimmeRHqprimme)
#  define Num_zero_matrix_TprimmeRHqprimme CONCAT(Num_zero_matrix_Tprimme,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
int Num_zero_matrix_Tprimme(void *x, primme_op_datatype xt, PRIMME_INT m,
      PRIMME_INT n, PRIMME_INT ldx, primme_context ctx);
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_trimatrix_Sprimme)
#  define Num_copy_trimatrix_Sprimme CONCAT(Num_copy_trimatrix_,SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_trimatrix_Rprimme)
#  define Num_copy_trimatrix_Rprimme CONCAT(Num_copy_trimatrix_,REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_trimatrix_SHprimme)
#  define Num_copy_trimatrix_SHprimme CONCAT(Num_copy_trimatrix_,HOST_SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_trimatrix_RHprimme)
#  define Num_copy_trimatrix_RHprimme CONCAT(Num_copy_trimatrix_,HOST_REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_trimatrix_SXprimme)
#  define Num_copy_trimatrix_SXprimme CONCAT(Num_copy_trimatrix_,XSCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_trimatrix_RXprimme)
#  define Num_copy_trimatrix_RXprimme CONCAT(Num_copy_trimatrix_,XREAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_trimatrix_Shprimme)
#  define Num_copy_trimatrix_Shprimme CONCAT(Num_copy_trimatrix_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_trimatrix_Rhprimme)
#  define Num_copy_trimatrix_Rhprimme CONCAT(Num_copy_trimatrix_,CONCAT(CONCAT(CONCAT(STEM_C,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_trimatrix_Ssprimme)
#  define Num_copy_trimatrix_Ssprimme CONCAT(Num_copy_trimatrix_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_trimatrix_Rsprimme)
#  define Num_copy_trimatrix_Rsprimme CONCAT(Num_copy_trimatrix_,CONCAT(CONCAT(CONCAT(STEM_C,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_trimatrix_Sdprimme)
#  define Num_copy_trimatrix_Sdprimme CONCAT(Num_copy_trimatrix_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_trimatrix_Rdprimme)
#  define Num_copy_trimatrix_Rdprimme CONCAT(Num_copy_trimatrix_,CONCAT(CONCAT(CONCAT(STEM_C,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_trimatrix_Sqprimme)
#  define Num_copy_trimatrix_Sqprimme CONCAT(Num_copy_trimatrix_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_trimatrix_Rqprimme)
#  define Num_copy_trimatrix_Rqprimme CONCAT(Num_copy_trimatrix_,CONCAT(CONCAT(CONCAT(STEM_C,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_trimatrix_SXhprimme)
#  define Num_copy_trimatrix_SXhprimme CONCAT(Num_copy_trimatrix_,CONCAT(CONCAT(CONCAT(,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_trimatrix_RXhprimme)
#  define Num_copy_trimatrix_RXhprimme CONCAT(Num_copy_trimatrix_,CONCAT(CONCAT(CONCAT(,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_trimatrix_SXsprimme)
#  define Num_copy_trimatrix_SXsprimme CONCAT(Num_copy_trimatrix_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_trimatrix_RXsprimme)
#  define Num_copy_trimatrix_RXsprimme CONCAT(Num_copy_trimatrix_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_trimatrix_SXdprimme)
#  define Num_copy_trimatrix_SXdprimme CONCAT(Num_copy_trimatrix_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_trimatrix_RXdprimme)
#  define Num_copy_trimatrix_RXdprimme CONCAT(Num_copy_trimatrix_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_trimatrix_SXqprimme)
#  define Num_copy_trimatrix_SXqprimme CONCAT(Num_copy_trimatrix_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_trimatrix_RXqprimme)
#  define Num_copy_trimatrix_RXqprimme CONCAT(Num_copy_trimatrix_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_trimatrix_SHhprimme)
#  define Num_copy_trimatrix_SHhprimme CONCAT(Num_copy_trimatrix_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_trimatrix_RHhprimme)
#  define Num_copy_trimatrix_RHhprimme CONCAT(Num_copy_trimatrix_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_trimatrix_SHsprimme)
#  define Num_copy_trimatrix_SHsprimme CONCAT(Num_copy_trimatrix_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_trimatrix_RHsprimme)
#  define Num_copy_trimatrix_RHsprimme CONCAT(Num_copy_trimatrix_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_trimatrix_SHdprimme)
#  define Num_copy_trimatrix_SHdprimme CONCAT(Num_copy_trimatrix_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_trimatrix_RHdprimme)
#  define Num_copy_trimatrix_RHdprimme CONCAT(Num_copy_trimatrix_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_trimatrix_SHqprimme)
#  define Num_copy_trimatrix_SHqprimme CONCAT(Num_copy_trimatrix_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_trimatrix_RHqprimme)
#  define Num_copy_trimatrix_RHqprimme CONCAT(Num_copy_trimatrix_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
int Num_copy_trimatrix_dprimme(dummy_type_dprimme *x, int m, int n, int ldx, int ul,
      int i0, dummy_type_dprimme *y, int ldy, int zero);
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_trimatrix_compact_Sprimme)
#  define Num_copy_trimatrix_compact_Sprimme CONCAT(Num_copy_trimatrix_compact_,SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_trimatrix_compact_Rprimme)
#  define Num_copy_trimatrix_compact_Rprimme CONCAT(Num_copy_trimatrix_compact_,REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_trimatrix_compact_SHprimme)
#  define Num_copy_trimatrix_compact_SHprimme CONCAT(Num_copy_trimatrix_compact_,HOST_SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_trimatrix_compact_RHprimme)
#  define Num_copy_trimatrix_compact_RHprimme CONCAT(Num_copy_trimatrix_compact_,HOST_REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_trimatrix_compact_SXprimme)
#  define Num_copy_trimatrix_compact_SXprimme CONCAT(Num_copy_trimatrix_compact_,XSCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_trimatrix_compact_RXprimme)
#  define Num_copy_trimatrix_compact_RXprimme CONCAT(Num_copy_trimatrix_compact_,XREAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_trimatrix_compact_Shprimme)
#  define Num_copy_trimatrix_compact_Shprimme CONCAT(Num_copy_trimatrix_compact_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_trimatrix_compact_Rhprimme)
#  define Num_copy_trimatrix_compact_Rhprimme CONCAT(Num_copy_trimatrix_compact_,CONCAT(CONCAT(CONCAT(STEM_C,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_trimatrix_compact_Ssprimme)
#  define Num_copy_trimatrix_compact_Ssprimme CONCAT(Num_copy_trimatrix_compact_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_trimatrix_compact_Rsprimme)
#  define Num_copy_trimatrix_compact_Rsprimme CONCAT(Num_copy_trimatrix_compact_,CONCAT(CONCAT(CONCAT(STEM_C,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_trimatrix_compact_Sdprimme)
#  define Num_copy_trimatrix_compact_Sdprimme CONCAT(Num_copy_trimatrix_compact_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_trimatrix_compact_Rdprimme)
#  define Num_copy_trimatrix_compact_Rdprimme CONCAT(Num_copy_trimatrix_compact_,CONCAT(CONCAT(CONCAT(STEM_C,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_trimatrix_compact_Sqprimme)
#  define Num_copy_trimatrix_compact_Sqprimme CONCAT(Num_copy_trimatrix_compact_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_trimatrix_compact_Rqprimme)
#  define Num_copy_trimatrix_compact_Rqprimme CONCAT(Num_copy_trimatrix_compact_,CONCAT(CONCAT(CONCAT(STEM_C,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_trimatrix_compact_SXhprimme)
#  define Num_copy_trimatrix_compact_SXhprimme CONCAT(Num_copy_trimatrix_compact_,CONCAT(CONCAT(CONCAT(,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_trimatrix_compact_RXhprimme)
#  define Num_copy_trimatrix_compact_RXhprimme CONCAT(Num_copy_trimatrix_compact_,CONCAT(CONCAT(CONCAT(,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_trimatrix_compact_SXsprimme)
#  define Num_copy_trimatrix_compact_SXsprimme CONCAT(Num_copy_trimatrix_compact_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_trimatrix_compact_RXsprimme)
#  define Num_copy_trimatrix_compact_RXsprimme CONCAT(Num_copy_trimatrix_compact_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_trimatrix_compact_SXdprimme)
#  define Num_copy_trimatrix_compact_SXdprimme CONCAT(Num_copy_trimatrix_compact_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_trimatrix_compact_RXdprimme)
#  define Num_copy_trimatrix_compact_RXdprimme CONCAT(Num_copy_trimatrix_compact_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_trimatrix_compact_SXqprimme)
#  define Num_copy_trimatrix_compact_SXqprimme CONCAT(Num_copy_trimatrix_compact_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_trimatrix_compact_RXqprimme)
#  define Num_copy_trimatrix_compact_RXqprimme CONCAT(Num_copy_trimatrix_compact_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_trimatrix_compact_SHhprimme)
#  define Num_copy_trimatrix_compact_SHhprimme CONCAT(Num_copy_trimatrix_compact_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_trimatrix_compact_RHhprimme)
#  define Num_copy_trimatrix_compact_RHhprimme CONCAT(Num_copy_trimatrix_compact_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_trimatrix_compact_SHsprimme)
#  define Num_copy_trimatrix_compact_SHsprimme CONCAT(Num_copy_trimatrix_compact_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_trimatrix_compact_RHsprimme)
#  define Num_copy_trimatrix_compact_RHsprimme CONCAT(Num_copy_trimatrix_compact_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_trimatrix_compact_SHdprimme)
#  define Num_copy_trimatrix_compact_SHdprimme CONCAT(Num_copy_trimatrix_compact_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_trimatrix_compact_RHdprimme)
#  define Num_copy_trimatrix_compact_RHdprimme CONCAT(Num_copy_trimatrix_compact_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_trimatrix_compact_SHqprimme)
#  define Num_copy_trimatrix_compact_SHqprimme CONCAT(Num_copy_trimatrix_compact_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_trimatrix_compact_RHqprimme)
#  define Num_copy_trimatrix_compact_RHqprimme CONCAT(Num_copy_trimatrix_compact_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
int Num_copy_trimatrix_compact_dprimme(dummy_type_dprimme *x, PRIMME_INT m, int n,
      PRIMME_INT ldx, int i0, dummy_type_dprimme *y, int *ly);
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_compact_trimatrix_Sprimme)
#  define Num_copy_compact_trimatrix_Sprimme CONCAT(Num_copy_compact_trimatrix_,SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_compact_trimatrix_Rprimme)
#  define Num_copy_compact_trimatrix_Rprimme CONCAT(Num_copy_compact_trimatrix_,REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_compact_trimatrix_SHprimme)
#  define Num_copy_compact_trimatrix_SHprimme CONCAT(Num_copy_compact_trimatrix_,HOST_SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_compact_trimatrix_RHprimme)
#  define Num_copy_compact_trimatrix_RHprimme CONCAT(Num_copy_compact_trimatrix_,HOST_REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_compact_trimatrix_SXprimme)
#  define Num_copy_compact_trimatrix_SXprimme CONCAT(Num_copy_compact_trimatrix_,XSCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_compact_trimatrix_RXprimme)
#  define Num_copy_compact_trimatrix_RXprimme CONCAT(Num_copy_compact_trimatrix_,XREAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_compact_trimatrix_Shprimme)
#  define Num_copy_compact_trimatrix_Shprimme CONCAT(Num_copy_compact_trimatrix_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_compact_trimatrix_Rhprimme)
#  define Num_copy_compact_trimatrix_Rhprimme CONCAT(Num_copy_compact_trimatrix_,CONCAT(CONCAT(CONCAT(STEM_C,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_compact_trimatrix_Ssprimme)
#  define Num_copy_compact_trimatrix_Ssprimme CONCAT(Num_copy_compact_trimatrix_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_compact_trimatrix_Rsprimme)
#  define Num_copy_compact_trimatrix_Rsprimme CONCAT(Num_copy_compact_trimatrix_,CONCAT(CONCAT(CONCAT(STEM_C,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_compact_trimatrix_Sdprimme)
#  define Num_copy_compact_trimatrix_Sdprimme CONCAT(Num_copy_compact_trimatrix_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_compact_trimatrix_Rdprimme)
#  define Num_copy_compact_trimatrix_Rdprimme CONCAT(Num_copy_compact_trimatrix_,CONCAT(CONCAT(CONCAT(STEM_C,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_compact_trimatrix_Sqprimme)
#  define Num_copy_compact_trimatrix_Sqprimme CONCAT(Num_copy_compact_trimatrix_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_compact_trimatrix_Rqprimme)
#  define Num_copy_compact_trimatrix_Rqprimme CONCAT(Num_copy_compact_trimatrix_,CONCAT(CONCAT(CONCAT(STEM_C,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_compact_trimatrix_SXhprimme)
#  define Num_copy_compact_trimatrix_SXhprimme CONCAT(Num_copy_compact_trimatrix_,CONCAT(CONCAT(CONCAT(,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_compact_trimatrix_RXhprimme)
#  define Num_copy_compact_trimatrix_RXhprimme CONCAT(Num_copy_compact_trimatrix_,CONCAT(CONCAT(CONCAT(,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_compact_trimatrix_SXsprimme)
#  define Num_copy_compact_trimatrix_SXsprimme CONCAT(Num_copy_compact_trimatrix_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_compact_trimatrix_RXsprimme)
#  define Num_copy_compact_trimatrix_RXsprimme CONCAT(Num_copy_compact_trimatrix_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_compact_trimatrix_SXdprimme)
#  define Num_copy_compact_trimatrix_SXdprimme CONCAT(Num_copy_compact_trimatrix_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_compact_trimatrix_RXdprimme)
#  define Num_copy_compact_trimatrix_RXdprimme CONCAT(Num_copy_compact_trimatrix_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_compact_trimatrix_SXqprimme)
#  define Num_copy_compact_trimatrix_SXqprimme CONCAT(Num_copy_compact_trimatrix_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_compact_trimatrix_RXqprimme)
#  define Num_copy_compact_trimatrix_RXqprimme CONCAT(Num_copy_compact_trimatrix_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_compact_trimatrix_SHhprimme)
#  define Num_copy_compact_trimatrix_SHhprimme CONCAT(Num_copy_compact_trimatrix_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_compact_trimatrix_RHhprimme)
#  define Num_copy_compact_trimatrix_RHhprimme CONCAT(Num_copy_compact_trimatrix_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_compact_trimatrix_SHsprimme)
#  define Num_copy_compact_trimatrix_SHsprimme CONCAT(Num_copy_compact_trimatrix_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_compact_trimatrix_RHsprimme)
#  define Num_copy_compact_trimatrix_RHsprimme CONCAT(Num_copy_compact_trimatrix_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_compact_trimatrix_SHdprimme)
#  define Num_copy_compact_trimatrix_SHdprimme CONCAT(Num_copy_compact_trimatrix_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_compact_trimatrix_RHdprimme)
#  define Num_copy_compact_trimatrix_RHdprimme CONCAT(Num_copy_compact_trimatrix_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_compact_trimatrix_SHqprimme)
#  define Num_copy_compact_trimatrix_SHqprimme CONCAT(Num_copy_compact_trimatrix_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_compact_trimatrix_RHqprimme)
#  define Num_copy_compact_trimatrix_RHqprimme CONCAT(Num_copy_compact_trimatrix_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
int Num_copy_compact_trimatrix_dprimme(dummy_type_dprimme *x, PRIMME_INT m, int n, int i0,
      dummy_type_dprimme *y, int ldy);
#if !defined(CHECK_TEMPLATE) && !defined(compute_submatrix_Sprimme)
#  define compute_submatrix_Sprimme CONCAT(compute_submatrix_,SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(compute_submatrix_Rprimme)
#  define compute_submatrix_Rprimme CONCAT(compute_submatrix_,REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(compute_submatrix_SHprimme)
#  define compute_submatrix_SHprimme CONCAT(compute_submatrix_,HOST_SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(compute_submatrix_RHprimme)
#  define compute_submatrix_RHprimme CONCAT(compute_submatrix_,HOST_REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(compute_submatrix_SXprimme)
#  define compute_submatrix_SXprimme CONCAT(compute_submatrix_,XSCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(compute_submatrix_RXprimme)
#  define compute_submatrix_RXprimme CONCAT(compute_submatrix_,XREAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(compute_submatrix_Shprimme)
#  define compute_submatrix_Shprimme CONCAT(compute_submatrix_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(compute_submatrix_Rhprimme)
#  define compute_submatrix_Rhprimme CONCAT(compute_submatrix_,CONCAT(CONCAT(CONCAT(STEM_C,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(compute_submatrix_Ssprimme)
#  define compute_submatrix_Ssprimme CONCAT(compute_submatrix_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(compute_submatrix_Rsprimme)
#  define compute_submatrix_Rsprimme CONCAT(compute_submatrix_,CONCAT(CONCAT(CONCAT(STEM_C,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(compute_submatrix_Sdprimme)
#  define compute_submatrix_Sdprimme CONCAT(compute_submatrix_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(compute_submatrix_Rdprimme)
#  define compute_submatrix_Rdprimme CONCAT(compute_submatrix_,CONCAT(CONCAT(CONCAT(STEM_C,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(compute_submatrix_Sqprimme)
#  define compute_submatrix_Sqprimme CONCAT(compute_submatrix_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(compute_submatrix_Rqprimme)
#  define compute_submatrix_Rqprimme CONCAT(compute_submatrix_,CONCAT(CONCAT(CONCAT(STEM_C,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(compute_submatrix_SXhprimme)
#  define compute_submatrix_SXhprimme CONCAT(compute_submatrix_,CONCAT(CONCAT(CONCAT(,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(compute_submatrix_RXhprimme)
#  define compute_submatrix_RXhprimme CONCAT(compute_submatrix_,CONCAT(CONCAT(CONCAT(,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(compute_submatrix_SXsprimme)
#  define compute_submatrix_SXsprimme CONCAT(compute_submatrix_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(compute_submatrix_RXsprimme)
#  define compute_submatrix_RXsprimme CONCAT(compute_submatrix_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(compute_submatrix_SXdprimme)
#  define compute_submatrix_SXdprimme CONCAT(compute_submatrix_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(compute_submatrix_RXdprimme)
#  define compute_submatrix_RXdprimme CONCAT(compute_submatrix_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(compute_submatrix_SXqprimme)
#  define compute_submatrix_SXqprimme CONCAT(compute_submatrix_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(compute_submatrix_RXqprimme)
#  define compute_submatrix_RXqprimme CONCAT(compute_submatrix_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(compute_submatrix_SHhprimme)
#  define compute_submatrix_SHhprimme CONCAT(compute_submatrix_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(compute_submatrix_RHhprimme)
#  define compute_submatrix_RHhprimme CONCAT(compute_submatrix_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(compute_submatrix_SHsprimme)
#  define compute_submatrix_SHsprimme CONCAT(compute_submatrix_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(compute_submatrix_RHsprimme)
#  define compute_submatrix_RHsprimme CONCAT(compute_submatrix_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(compute_submatrix_SHdprimme)
#  define compute_submatrix_SHdprimme CONCAT(compute_submatrix_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(compute_submatrix_RHdprimme)
#  define compute_submatrix_RHdprimme CONCAT(compute_submatrix_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(compute_submatrix_SHqprimme)
#  define compute_submatrix_SHqprimme CONCAT(compute_submatrix_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(compute_submatrix_RHqprimme)
#  define compute_submatrix_RHqprimme CONCAT(compute_submatrix_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
int compute_submatrix_dprimme(dummy_type_dprimme *X, int nX, int ldX, dummy_type_dprimme *H, int nH,
      int ldH, int isherm, dummy_type_dprimme *R, int ldR, primme_context ctx);
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_columns_Sprimme)
#  define Num_copy_matrix_columns_Sprimme CONCAT(Num_copy_matrix_columns_,SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_columns_Rprimme)
#  define Num_copy_matrix_columns_Rprimme CONCAT(Num_copy_matrix_columns_,REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_columns_SHprimme)
#  define Num_copy_matrix_columns_SHprimme CONCAT(Num_copy_matrix_columns_,HOST_SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_columns_RHprimme)
#  define Num_copy_matrix_columns_RHprimme CONCAT(Num_copy_matrix_columns_,HOST_REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_columns_SXprimme)
#  define Num_copy_matrix_columns_SXprimme CONCAT(Num_copy_matrix_columns_,XSCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_columns_RXprimme)
#  define Num_copy_matrix_columns_RXprimme CONCAT(Num_copy_matrix_columns_,XREAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_columns_Shprimme)
#  define Num_copy_matrix_columns_Shprimme CONCAT(Num_copy_matrix_columns_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_columns_Rhprimme)
#  define Num_copy_matrix_columns_Rhprimme CONCAT(Num_copy_matrix_columns_,CONCAT(CONCAT(CONCAT(STEM_C,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_columns_Ssprimme)
#  define Num_copy_matrix_columns_Ssprimme CONCAT(Num_copy_matrix_columns_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_columns_Rsprimme)
#  define Num_copy_matrix_columns_Rsprimme CONCAT(Num_copy_matrix_columns_,CONCAT(CONCAT(CONCAT(STEM_C,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_columns_Sdprimme)
#  define Num_copy_matrix_columns_Sdprimme CONCAT(Num_copy_matrix_columns_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_columns_Rdprimme)
#  define Num_copy_matrix_columns_Rdprimme CONCAT(Num_copy_matrix_columns_,CONCAT(CONCAT(CONCAT(STEM_C,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_columns_Sqprimme)
#  define Num_copy_matrix_columns_Sqprimme CONCAT(Num_copy_matrix_columns_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_columns_Rqprimme)
#  define Num_copy_matrix_columns_Rqprimme CONCAT(Num_copy_matrix_columns_,CONCAT(CONCAT(CONCAT(STEM_C,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_columns_SXhprimme)
#  define Num_copy_matrix_columns_SXhprimme CONCAT(Num_copy_matrix_columns_,CONCAT(CONCAT(CONCAT(,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_columns_RXhprimme)
#  define Num_copy_matrix_columns_RXhprimme CONCAT(Num_copy_matrix_columns_,CONCAT(CONCAT(CONCAT(,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_columns_SXsprimme)
#  define Num_copy_matrix_columns_SXsprimme CONCAT(Num_copy_matrix_columns_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_columns_RXsprimme)
#  define Num_copy_matrix_columns_RXsprimme CONCAT(Num_copy_matrix_columns_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_columns_SXdprimme)
#  define Num_copy_matrix_columns_SXdprimme CONCAT(Num_copy_matrix_columns_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_columns_RXdprimme)
#  define Num_copy_matrix_columns_RXdprimme CONCAT(Num_copy_matrix_columns_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_columns_SXqprimme)
#  define Num_copy_matrix_columns_SXqprimme CONCAT(Num_copy_matrix_columns_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_columns_RXqprimme)
#  define Num_copy_matrix_columns_RXqprimme CONCAT(Num_copy_matrix_columns_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_columns_SHhprimme)
#  define Num_copy_matrix_columns_SHhprimme CONCAT(Num_copy_matrix_columns_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_columns_RHhprimme)
#  define Num_copy_matrix_columns_RHhprimme CONCAT(Num_copy_matrix_columns_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_columns_SHsprimme)
#  define Num_copy_matrix_columns_SHsprimme CONCAT(Num_copy_matrix_columns_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_columns_RHsprimme)
#  define Num_copy_matrix_columns_RHsprimme CONCAT(Num_copy_matrix_columns_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_columns_SHdprimme)
#  define Num_copy_matrix_columns_SHdprimme CONCAT(Num_copy_matrix_columns_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_columns_RHdprimme)
#  define Num_copy_matrix_columns_RHdprimme CONCAT(Num_copy_matrix_columns_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_columns_SHqprimme)
#  define Num_copy_matrix_columns_SHqprimme CONCAT(Num_copy_matrix_columns_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_columns_RHqprimme)
#  define Num_copy_matrix_columns_RHqprimme CONCAT(Num_copy_matrix_columns_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
int Num_copy_matrix_columns_dprimme(dummy_type_dprimme *x, PRIMME_INT m, int *xin, int n,
                                     PRIMME_INT ldx, dummy_type_dprimme *y, int *yin,
                                     PRIMME_INT ldy, primme_context ctx);
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_rows_Sprimme)
#  define Num_copy_matrix_rows_Sprimme CONCAT(Num_copy_matrix_rows_,SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_rows_Rprimme)
#  define Num_copy_matrix_rows_Rprimme CONCAT(Num_copy_matrix_rows_,REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_rows_SHprimme)
#  define Num_copy_matrix_rows_SHprimme CONCAT(Num_copy_matrix_rows_,HOST_SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_rows_RHprimme)
#  define Num_copy_matrix_rows_RHprimme CONCAT(Num_copy_matrix_rows_,HOST_REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_rows_SXprimme)
#  define Num_copy_matrix_rows_SXprimme CONCAT(Num_copy_matrix_rows_,XSCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_rows_RXprimme)
#  define Num_copy_matrix_rows_RXprimme CONCAT(Num_copy_matrix_rows_,XREAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_rows_Shprimme)
#  define Num_copy_matrix_rows_Shprimme CONCAT(Num_copy_matrix_rows_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_rows_Rhprimme)
#  define Num_copy_matrix_rows_Rhprimme CONCAT(Num_copy_matrix_rows_,CONCAT(CONCAT(CONCAT(STEM_C,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_rows_Ssprimme)
#  define Num_copy_matrix_rows_Ssprimme CONCAT(Num_copy_matrix_rows_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_rows_Rsprimme)
#  define Num_copy_matrix_rows_Rsprimme CONCAT(Num_copy_matrix_rows_,CONCAT(CONCAT(CONCAT(STEM_C,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_rows_Sdprimme)
#  define Num_copy_matrix_rows_Sdprimme CONCAT(Num_copy_matrix_rows_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_rows_Rdprimme)
#  define Num_copy_matrix_rows_Rdprimme CONCAT(Num_copy_matrix_rows_,CONCAT(CONCAT(CONCAT(STEM_C,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_rows_Sqprimme)
#  define Num_copy_matrix_rows_Sqprimme CONCAT(Num_copy_matrix_rows_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_rows_Rqprimme)
#  define Num_copy_matrix_rows_Rqprimme CONCAT(Num_copy_matrix_rows_,CONCAT(CONCAT(CONCAT(STEM_C,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_rows_SXhprimme)
#  define Num_copy_matrix_rows_SXhprimme CONCAT(Num_copy_matrix_rows_,CONCAT(CONCAT(CONCAT(,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_rows_RXhprimme)
#  define Num_copy_matrix_rows_RXhprimme CONCAT(Num_copy_matrix_rows_,CONCAT(CONCAT(CONCAT(,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_rows_SXsprimme)
#  define Num_copy_matrix_rows_SXsprimme CONCAT(Num_copy_matrix_rows_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_rows_RXsprimme)
#  define Num_copy_matrix_rows_RXsprimme CONCAT(Num_copy_matrix_rows_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_rows_SXdprimme)
#  define Num_copy_matrix_rows_SXdprimme CONCAT(Num_copy_matrix_rows_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_rows_RXdprimme)
#  define Num_copy_matrix_rows_RXdprimme CONCAT(Num_copy_matrix_rows_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_rows_SXqprimme)
#  define Num_copy_matrix_rows_SXqprimme CONCAT(Num_copy_matrix_rows_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_rows_RXqprimme)
#  define Num_copy_matrix_rows_RXqprimme CONCAT(Num_copy_matrix_rows_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_rows_SHhprimme)
#  define Num_copy_matrix_rows_SHhprimme CONCAT(Num_copy_matrix_rows_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_rows_RHhprimme)
#  define Num_copy_matrix_rows_RHhprimme CONCAT(Num_copy_matrix_rows_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_rows_SHsprimme)
#  define Num_copy_matrix_rows_SHsprimme CONCAT(Num_copy_matrix_rows_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_rows_RHsprimme)
#  define Num_copy_matrix_rows_RHsprimme CONCAT(Num_copy_matrix_rows_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_rows_SHdprimme)
#  define Num_copy_matrix_rows_SHdprimme CONCAT(Num_copy_matrix_rows_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_rows_RHdprimme)
#  define Num_copy_matrix_rows_RHdprimme CONCAT(Num_copy_matrix_rows_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_rows_SHqprimme)
#  define Num_copy_matrix_rows_SHqprimme CONCAT(Num_copy_matrix_rows_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_copy_matrix_rows_RHqprimme)
#  define Num_copy_matrix_rows_RHqprimme CONCAT(Num_copy_matrix_rows_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
int Num_copy_matrix_rows_dprimme(dummy_type_dprimme *x, int *xim, int m, int n,
                                     PRIMME_INT ldx, dummy_type_dprimme *y, int *yim,
                                     PRIMME_INT ldy, primme_context ctx);
#if !defined(CHECK_TEMPLATE) && !defined(permute_vecs_Sprimme)
#  define permute_vecs_Sprimme CONCAT(permute_vecs_,SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(permute_vecs_Rprimme)
#  define permute_vecs_Rprimme CONCAT(permute_vecs_,REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(permute_vecs_SHprimme)
#  define permute_vecs_SHprimme CONCAT(permute_vecs_,HOST_SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(permute_vecs_RHprimme)
#  define permute_vecs_RHprimme CONCAT(permute_vecs_,HOST_REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(permute_vecs_SXprimme)
#  define permute_vecs_SXprimme CONCAT(permute_vecs_,XSCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(permute_vecs_RXprimme)
#  define permute_vecs_RXprimme CONCAT(permute_vecs_,XREAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(permute_vecs_Shprimme)
#  define permute_vecs_Shprimme CONCAT(permute_vecs_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(permute_vecs_Rhprimme)
#  define permute_vecs_Rhprimme CONCAT(permute_vecs_,CONCAT(CONCAT(CONCAT(STEM_C,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(permute_vecs_Ssprimme)
#  define permute_vecs_Ssprimme CONCAT(permute_vecs_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(permute_vecs_Rsprimme)
#  define permute_vecs_Rsprimme CONCAT(permute_vecs_,CONCAT(CONCAT(CONCAT(STEM_C,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(permute_vecs_Sdprimme)
#  define permute_vecs_Sdprimme CONCAT(permute_vecs_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(permute_vecs_Rdprimme)
#  define permute_vecs_Rdprimme CONCAT(permute_vecs_,CONCAT(CONCAT(CONCAT(STEM_C,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(permute_vecs_Sqprimme)
#  define permute_vecs_Sqprimme CONCAT(permute_vecs_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(permute_vecs_Rqprimme)
#  define permute_vecs_Rqprimme CONCAT(permute_vecs_,CONCAT(CONCAT(CONCAT(STEM_C,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(permute_vecs_SXhprimme)
#  define permute_vecs_SXhprimme CONCAT(permute_vecs_,CONCAT(CONCAT(CONCAT(,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(permute_vecs_RXhprimme)
#  define permute_vecs_RXhprimme CONCAT(permute_vecs_,CONCAT(CONCAT(CONCAT(,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(permute_vecs_SXsprimme)
#  define permute_vecs_SXsprimme CONCAT(permute_vecs_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(permute_vecs_RXsprimme)
#  define permute_vecs_RXsprimme CONCAT(permute_vecs_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(permute_vecs_SXdprimme)
#  define permute_vecs_SXdprimme CONCAT(permute_vecs_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(permute_vecs_RXdprimme)
#  define permute_vecs_RXdprimme CONCAT(permute_vecs_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(permute_vecs_SXqprimme)
#  define permute_vecs_SXqprimme CONCAT(permute_vecs_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(permute_vecs_RXqprimme)
#  define permute_vecs_RXqprimme CONCAT(permute_vecs_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(permute_vecs_SHhprimme)
#  define permute_vecs_SHhprimme CONCAT(permute_vecs_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(permute_vecs_RHhprimme)
#  define permute_vecs_RHhprimme CONCAT(permute_vecs_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(permute_vecs_SHsprimme)
#  define permute_vecs_SHsprimme CONCAT(permute_vecs_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(permute_vecs_RHsprimme)
#  define permute_vecs_RHsprimme CONCAT(permute_vecs_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(permute_vecs_SHdprimme)
#  define permute_vecs_SHdprimme CONCAT(permute_vecs_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(permute_vecs_RHdprimme)
#  define permute_vecs_RHdprimme CONCAT(permute_vecs_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(permute_vecs_SHqprimme)
#  define permute_vecs_SHqprimme CONCAT(permute_vecs_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(permute_vecs_RHqprimme)
#  define permute_vecs_RHqprimme CONCAT(permute_vecs_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
int permute_vecs_dprimme(dummy_type_dprimme *vecs, PRIMME_INT m, int n, PRIMME_INT ld,
                         int *perm_, primme_context ctx);
#if !defined(CHECK_TEMPLATE) && !defined(permute_vecs_iprimmeSprimme)
#  define permute_vecs_iprimmeSprimme CONCAT(permute_vecs_iprimme,SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(permute_vecs_iprimmeRprimme)
#  define permute_vecs_iprimmeRprimme CONCAT(permute_vecs_iprimme,REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(permute_vecs_iprimmeSHprimme)
#  define permute_vecs_iprimmeSHprimme CONCAT(permute_vecs_iprimme,HOST_SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(permute_vecs_iprimmeRHprimme)
#  define permute_vecs_iprimmeRHprimme CONCAT(permute_vecs_iprimme,HOST_REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(permute_vecs_iprimmeSXprimme)
#  define permute_vecs_iprimmeSXprimme CONCAT(permute_vecs_iprimme,XSCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(permute_vecs_iprimmeRXprimme)
#  define permute_vecs_iprimmeRXprimme CONCAT(permute_vecs_iprimme,XREAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(permute_vecs_iprimmeShprimme)
#  define permute_vecs_iprimmeShprimme CONCAT(permute_vecs_iprimme,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(permute_vecs_iprimmeRhprimme)
#  define permute_vecs_iprimmeRhprimme CONCAT(permute_vecs_iprimme,CONCAT(CONCAT(CONCAT(STEM_C,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(permute_vecs_iprimmeSsprimme)
#  define permute_vecs_iprimmeSsprimme CONCAT(permute_vecs_iprimme,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(permute_vecs_iprimmeRsprimme)
#  define permute_vecs_iprimmeRsprimme CONCAT(permute_vecs_iprimme,CONCAT(CONCAT(CONCAT(STEM_C,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(permute_vecs_iprimmeSdprimme)
#  define permute_vecs_iprimmeSdprimme CONCAT(permute_vecs_iprimme,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(permute_vecs_iprimmeRdprimme)
#  define permute_vecs_iprimmeRdprimme CONCAT(permute_vecs_iprimme,CONCAT(CONCAT(CONCAT(STEM_C,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(permute_vecs_iprimmeSqprimme)
#  define permute_vecs_iprimmeSqprimme CONCAT(permute_vecs_iprimme,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(permute_vecs_iprimmeRqprimme)
#  define permute_vecs_iprimmeRqprimme CONCAT(permute_vecs_iprimme,CONCAT(CONCAT(CONCAT(STEM_C,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(permute_vecs_iprimmeSXhprimme)
#  define permute_vecs_iprimmeSXhprimme CONCAT(permute_vecs_iprimme,CONCAT(CONCAT(CONCAT(,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(permute_vecs_iprimmeRXhprimme)
#  define permute_vecs_iprimmeRXhprimme CONCAT(permute_vecs_iprimme,CONCAT(CONCAT(CONCAT(,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(permute_vecs_iprimmeSXsprimme)
#  define permute_vecs_iprimmeSXsprimme CONCAT(permute_vecs_iprimme,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(permute_vecs_iprimmeRXsprimme)
#  define permute_vecs_iprimmeRXsprimme CONCAT(permute_vecs_iprimme,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(permute_vecs_iprimmeSXdprimme)
#  define permute_vecs_iprimmeSXdprimme CONCAT(permute_vecs_iprimme,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(permute_vecs_iprimmeRXdprimme)
#  define permute_vecs_iprimmeRXdprimme CONCAT(permute_vecs_iprimme,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(permute_vecs_iprimmeSXqprimme)
#  define permute_vecs_iprimmeSXqprimme CONCAT(permute_vecs_iprimme,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(permute_vecs_iprimmeRXqprimme)
#  define permute_vecs_iprimmeRXqprimme CONCAT(permute_vecs_iprimme,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(permute_vecs_iprimmeSHhprimme)
#  define permute_vecs_iprimmeSHhprimme CONCAT(permute_vecs_iprimme,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(permute_vecs_iprimmeRHhprimme)
#  define permute_vecs_iprimmeRHhprimme CONCAT(permute_vecs_iprimme,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(permute_vecs_iprimmeSHsprimme)
#  define permute_vecs_iprimmeSHsprimme CONCAT(permute_vecs_iprimme,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(permute_vecs_iprimmeRHsprimme)
#  define permute_vecs_iprimmeRHsprimme CONCAT(permute_vecs_iprimme,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(permute_vecs_iprimmeSHdprimme)
#  define permute_vecs_iprimmeSHdprimme CONCAT(permute_vecs_iprimme,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(permute_vecs_iprimmeRHdprimme)
#  define permute_vecs_iprimmeRHdprimme CONCAT(permute_vecs_iprimme,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(permute_vecs_iprimmeSHqprimme)
#  define permute_vecs_iprimmeSHqprimme CONCAT(permute_vecs_iprimme,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(permute_vecs_iprimmeRHqprimme)
#  define permute_vecs_iprimmeRHqprimme CONCAT(permute_vecs_iprimme,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
int permute_vecs_iprimme(int *vecs, int n, int *perm_, primme_context ctx);
#if !defined(CHECK_TEMPLATE) && !defined(Num_compact_vecs_Sprimme)
#  define Num_compact_vecs_Sprimme CONCAT(Num_compact_vecs_,SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_compact_vecs_Rprimme)
#  define Num_compact_vecs_Rprimme CONCAT(Num_compact_vecs_,REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_compact_vecs_SHprimme)
#  define Num_compact_vecs_SHprimme CONCAT(Num_compact_vecs_,HOST_SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_compact_vecs_RHprimme)
#  define Num_compact_vecs_RHprimme CONCAT(Num_compact_vecs_,HOST_REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_compact_vecs_SXprimme)
#  define Num_compact_vecs_SXprimme CONCAT(Num_compact_vecs_,XSCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_compact_vecs_RXprimme)
#  define Num_compact_vecs_RXprimme CONCAT(Num_compact_vecs_,XREAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_compact_vecs_Shprimme)
#  define Num_compact_vecs_Shprimme CONCAT(Num_compact_vecs_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_compact_vecs_Rhprimme)
#  define Num_compact_vecs_Rhprimme CONCAT(Num_compact_vecs_,CONCAT(CONCAT(CONCAT(STEM_C,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_compact_vecs_Ssprimme)
#  define Num_compact_vecs_Ssprimme CONCAT(Num_compact_vecs_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_compact_vecs_Rsprimme)
#  define Num_compact_vecs_Rsprimme CONCAT(Num_compact_vecs_,CONCAT(CONCAT(CONCAT(STEM_C,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_compact_vecs_Sdprimme)
#  define Num_compact_vecs_Sdprimme CONCAT(Num_compact_vecs_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_compact_vecs_Rdprimme)
#  define Num_compact_vecs_Rdprimme CONCAT(Num_compact_vecs_,CONCAT(CONCAT(CONCAT(STEM_C,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_compact_vecs_Sqprimme)
#  define Num_compact_vecs_Sqprimme CONCAT(Num_compact_vecs_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_compact_vecs_Rqprimme)
#  define Num_compact_vecs_Rqprimme CONCAT(Num_compact_vecs_,CONCAT(CONCAT(CONCAT(STEM_C,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_compact_vecs_SXhprimme)
#  define Num_compact_vecs_SXhprimme CONCAT(Num_compact_vecs_,CONCAT(CONCAT(CONCAT(,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_compact_vecs_RXhprimme)
#  define Num_compact_vecs_RXhprimme CONCAT(Num_compact_vecs_,CONCAT(CONCAT(CONCAT(,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_compact_vecs_SXsprimme)
#  define Num_compact_vecs_SXsprimme CONCAT(Num_compact_vecs_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_compact_vecs_RXsprimme)
#  define Num_compact_vecs_RXsprimme CONCAT(Num_compact_vecs_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_compact_vecs_SXdprimme)
#  define Num_compact_vecs_SXdprimme CONCAT(Num_compact_vecs_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_compact_vecs_RXdprimme)
#  define Num_compact_vecs_RXdprimme CONCAT(Num_compact_vecs_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_compact_vecs_SXqprimme)
#  define Num_compact_vecs_SXqprimme CONCAT(Num_compact_vecs_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_compact_vecs_RXqprimme)
#  define Num_compact_vecs_RXqprimme CONCAT(Num_compact_vecs_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_compact_vecs_SHhprimme)
#  define Num_compact_vecs_SHhprimme CONCAT(Num_compact_vecs_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_compact_vecs_RHhprimme)
#  define Num_compact_vecs_RHhprimme CONCAT(Num_compact_vecs_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_compact_vecs_SHsprimme)
#  define Num_compact_vecs_SHsprimme CONCAT(Num_compact_vecs_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_compact_vecs_RHsprimme)
#  define Num_compact_vecs_RHsprimme CONCAT(Num_compact_vecs_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_compact_vecs_SHdprimme)
#  define Num_compact_vecs_SHdprimme CONCAT(Num_compact_vecs_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_compact_vecs_RHdprimme)
#  define Num_compact_vecs_RHdprimme CONCAT(Num_compact_vecs_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_compact_vecs_SHqprimme)
#  define Num_compact_vecs_SHqprimme CONCAT(Num_compact_vecs_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_compact_vecs_RHqprimme)
#  define Num_compact_vecs_RHqprimme CONCAT(Num_compact_vecs_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
dummy_type_dprimme* Num_compact_vecs_dprimme(dummy_type_dprimme *vecs, PRIMME_INT m, int n,
      PRIMME_INT ld, int *perm, dummy_type_dprimme *work, PRIMME_INT ldwork,
      int avoidCopy, primme_context ctx);
#if !defined(CHECK_TEMPLATE) && !defined(Num_scale_matrix_Sprimme)
#  define Num_scale_matrix_Sprimme CONCAT(Num_scale_matrix_,SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_scale_matrix_Rprimme)
#  define Num_scale_matrix_Rprimme CONCAT(Num_scale_matrix_,REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_scale_matrix_SHprimme)
#  define Num_scale_matrix_SHprimme CONCAT(Num_scale_matrix_,HOST_SCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_scale_matrix_RHprimme)
#  define Num_scale_matrix_RHprimme CONCAT(Num_scale_matrix_,HOST_REAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_scale_matrix_SXprimme)
#  define Num_scale_matrix_SXprimme CONCAT(Num_scale_matrix_,XSCALAR_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_scale_matrix_RXprimme)
#  define Num_scale_matrix_RXprimme CONCAT(Num_scale_matrix_,XREAL_SUF)
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_scale_matrix_Shprimme)
#  define Num_scale_matrix_Shprimme CONCAT(Num_scale_matrix_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_scale_matrix_Rhprimme)
#  define Num_scale_matrix_Rhprimme CONCAT(Num_scale_matrix_,CONCAT(CONCAT(CONCAT(STEM_C,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_scale_matrix_Ssprimme)
#  define Num_scale_matrix_Ssprimme CONCAT(Num_scale_matrix_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_scale_matrix_Rsprimme)
#  define Num_scale_matrix_Rsprimme CONCAT(Num_scale_matrix_,CONCAT(CONCAT(CONCAT(STEM_C,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_scale_matrix_Sdprimme)
#  define Num_scale_matrix_Sdprimme CONCAT(Num_scale_matrix_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_scale_matrix_Rdprimme)
#  define Num_scale_matrix_Rdprimme CONCAT(Num_scale_matrix_,CONCAT(CONCAT(CONCAT(STEM_C,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_scale_matrix_Sqprimme)
#  define Num_scale_matrix_Sqprimme CONCAT(Num_scale_matrix_,CONCAT(CONCAT(CONCAT(STEM_C,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_scale_matrix_Rqprimme)
#  define Num_scale_matrix_Rqprimme CONCAT(Num_scale_matrix_,CONCAT(CONCAT(CONCAT(STEM_C,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_scale_matrix_SXhprimme)
#  define Num_scale_matrix_SXhprimme CONCAT(Num_scale_matrix_,CONCAT(CONCAT(CONCAT(,USE_ARITH(h,k)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_scale_matrix_RXhprimme)
#  define Num_scale_matrix_RXhprimme CONCAT(Num_scale_matrix_,CONCAT(CONCAT(CONCAT(,h),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_scale_matrix_SXsprimme)
#  define Num_scale_matrix_SXsprimme CONCAT(Num_scale_matrix_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_scale_matrix_RXsprimme)
#  define Num_scale_matrix_RXsprimme CONCAT(Num_scale_matrix_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_scale_matrix_SXdprimme)
#  define Num_scale_matrix_SXdprimme CONCAT(Num_scale_matrix_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_scale_matrix_RXdprimme)
#  define Num_scale_matrix_RXdprimme CONCAT(Num_scale_matrix_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_scale_matrix_SXqprimme)
#  define Num_scale_matrix_SXqprimme CONCAT(Num_scale_matrix_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_scale_matrix_RXqprimme)
#  define Num_scale_matrix_RXqprimme CONCAT(Num_scale_matrix_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_scale_matrix_SHhprimme)
#  define Num_scale_matrix_SHhprimme CONCAT(Num_scale_matrix_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_scale_matrix_RHhprimme)
#  define Num_scale_matrix_RHhprimme CONCAT(Num_scale_matrix_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_scale_matrix_SHsprimme)
#  define Num_scale_matrix_SHsprimme CONCAT(Num_scale_matrix_,CONCAT(CONCAT(CONCAT(,USE_ARITH(s,c)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_scale_matrix_RHsprimme)
#  define Num_scale_matrix_RHsprimme CONCAT(Num_scale_matrix_,CONCAT(CONCAT(CONCAT(,s),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_scale_matrix_SHdprimme)
#  define Num_scale_matrix_SHdprimme CONCAT(Num_scale_matrix_,CONCAT(CONCAT(CONCAT(,USE_ARITH(d,z)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_scale_matrix_RHdprimme)
#  define Num_scale_matrix_RHdprimme CONCAT(Num_scale_matrix_,CONCAT(CONCAT(CONCAT(,d),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_scale_matrix_SHqprimme)
#  define Num_scale_matrix_SHqprimme CONCAT(Num_scale_matrix_,CONCAT(CONCAT(CONCAT(,USE_ARITH(q,w)),primme),))
#endif
#if !defined(CHECK_TEMPLATE) && !defined(Num_scale_matrix_RHqprimme)
#  define Num_scale_matrix_RHqprimme CONCAT(Num_scale_matrix_,CONCAT(CONCAT(CONCAT(,q),primme),))
#endif
int Num_scale_matrix_dprimme(dummy_type_dprimme *x, PRIMME_INT m, PRIMME_INT n,
      PRIMME_INT ldx, dummy_type_dprimme *s, dummy_type_dprimme *y, PRIMME_INT ldy, primme_context ctx);
int Num_matrix_astype_hprimme(void *x, PRIMME_INT m, PRIMME_INT n,
      PRIMME_INT ldx, primme_op_datatype xt, void **y, PRIMME_INT *ldy,
      primme_op_datatype yt, int do_alloc, int do_copy, primme_context ctx);
int Num_copy_matrix_astype_hprimme(void *x, PRIMME_INT xm0, PRIMME_INT xn0,
      PRIMME_INT m, PRIMME_INT n, PRIMME_INT ldx, primme_op_datatype xt,
      void *y, PRIMME_INT ym0, PRIMME_INT yn0, PRIMME_INT ldy,
      primme_op_datatype yt, primme_context ctx);
int Num_sizeof_hprimme(primme_op_datatype t, size_t *s);
int Num_machine_epsilon_hprimme(primme_op_datatype t, double *eps);
int Num_copy_matrix_conj_hprimme(dummy_type_hprimme *x, PRIMME_INT m, PRIMME_INT n,
      PRIMME_INT ldx, dummy_type_hprimme *y, PRIMME_INT ldy, primme_context ctx);
int Num_copy_trimatrix_hprimme(dummy_type_hprimme *x, int m, int n, int ldx, int ul,
      int i0, dummy_type_hprimme *y, int ldy, int zero);
int Num_copy_trimatrix_compact_hprimme(dummy_type_hprimme *x, PRIMME_INT m, int n,
      PRIMME_INT ldx, int i0, dummy_type_hprimme *y, int *ly);
int Num_copy_compact_trimatrix_hprimme(dummy_type_hprimme *x, PRIMME_INT m, int n, int i0,
      dummy_type_hprimme *y, int ldy);
int Num_copy_matrix_columns_hprimme(dummy_type_hprimme *x, PRIMME_INT m, int *xin, int n,
                                     PRIMME_INT ldx, dummy_type_hprimme *y, int *yin,
                                     PRIMME_INT ldy, primme_context ctx);
int Num_copy_matrix_rows_hprimme(dummy_type_hprimme *x, int *xim, int m, int n,
                                     PRIMME_INT ldx, dummy_type_hprimme *y, int *yim,
                                     PRIMME_INT ldy, primme_context ctx);
int permute_vecs_hprimme(dummy_type_hprimme *vecs, PRIMME_INT m, int n, PRIMME_INT ld,
                         int *perm_, primme_context ctx);
dummy_type_hprimme* Num_compact_vecs_hprimme(dummy_type_hprimme *vecs, PRIMME_INT m, int n,
      PRIMME_INT ld, int *perm, dummy_type_hprimme *work, PRIMME_INT ldwork,
      int avoidCopy, primme_context ctx);
int Num_scale_matrix_hprimme(dummy_type_hprimme *x, PRIMME_INT m, PRIMME_INT n,
      PRIMME_INT ldx, dummy_type_sprimme *s, dummy_type_hprimme *y, PRIMME_INT ldy, primme_context ctx);
int Num_matrix_astype_kprimme(void *x, PRIMME_INT m, PRIMME_INT n,
      PRIMME_INT ldx, primme_op_datatype xt, void **y, PRIMME_INT *ldy,
      primme_op_datatype yt, int do_alloc, int do_copy, primme_context ctx);
int Num_copy_matrix_astype_kprimme(void *x, PRIMME_INT xm0, PRIMME_INT xn0,
      PRIMME_INT m, PRIMME_INT n, PRIMME_INT ldx, primme_op_datatype xt,
      void *y, PRIMME_INT ym0, PRIMME_INT yn0, PRIMME_INT ldy,
      primme_op_datatype yt, primme_context ctx);
int Num_sizeof_kprimme(primme_op_datatype t, size_t *s);
int Num_machine_epsilon_kprimme(primme_op_datatype t, double *eps);
int Num_copy_trimatrix_kprimme(dummy_type_kprimme *x, int m, int n, int ldx, int ul,
      int i0, dummy_type_kprimme *y, int ldy, int zero);
int Num_copy_trimatrix_compact_kprimme(dummy_type_kprimme *x, PRIMME_INT m, int n,
      PRIMME_INT ldx, int i0, dummy_type_kprimme *y, int *ly);
int Num_copy_compact_trimatrix_kprimme(dummy_type_kprimme *x, PRIMME_INT m, int n, int i0,
      dummy_type_kprimme *y, int ldy);
int Num_copy_matrix_columns_kprimme(dummy_type_kprimme *x, PRIMME_INT m, int *xin, int n,
                                     PRIMME_INT ldx, dummy_type_kprimme *y, int *yin,
                                     PRIMME_INT ldy, primme_context ctx);
int Num_copy_matrix_rows_kprimme(dummy_type_kprimme *x, int *xim, int m, int n,
                                     PRIMME_INT ldx, dummy_type_kprimme *y, int *yim,
                                     PRIMME_INT ldy, primme_context ctx);
int permute_vecs_kprimme(dummy_type_kprimme *vecs, PRIMME_INT m, int n, PRIMME_INT ld,
                         int *perm_, primme_context ctx);
dummy_type_kprimme* Num_compact_vecs_kprimme(dummy_type_kprimme *vecs, PRIMME_INT m, int n,
      PRIMME_INT ld, int *perm, dummy_type_kprimme *work, PRIMME_INT ldwork,
      int avoidCopy, primme_context ctx);
int Num_scale_matrix_kprimme(dummy_type_kprimme *x, PRIMME_INT m, PRIMME_INT n,
      PRIMME_INT ldx, dummy_type_sprimme *s, dummy_type_kprimme *y, PRIMME_INT ldy, primme_context ctx);
int Num_matrix_astype_sprimme(void *x, PRIMME_INT m, PRIMME_INT n,
      PRIMME_INT ldx, primme_op_datatype xt, void **y, PRIMME_INT *ldy,
      primme_op_datatype yt, int do_alloc, int do_copy, primme_context ctx);
int Num_copy_matrix_astype_sprimme(void *x, PRIMME_INT xm0, PRIMME_INT xn0,
      PRIMME_INT m, PRIMME_INT n, PRIMME_INT ldx, primme_op_datatype xt,
      void *y, PRIMME_INT ym0, PRIMME_INT yn0, PRIMME_INT ldy,
      primme_op_datatype yt, primme_context ctx);
int Num_sizeof_sprimme(primme_op_datatype t, size_t *s);
int Num_machine_epsilon_sprimme(primme_op_datatype t, double *eps);
int Num_copy_matrix_conj_sprimme(dummy_type_sprimme *x, PRIMME_INT m, PRIMME_INT n,
      PRIMME_INT ldx, dummy_type_sprimme *y, PRIMME_INT ldy, primme_context ctx);
int Num_copy_trimatrix_sprimme(dummy_type_sprimme *x, int m, int n, int ldx, int ul,
      int i0, dummy_type_sprimme *y, int ldy, int zero);
int Num_copy_trimatrix_compact_sprimme(dummy_type_sprimme *x, PRIMME_INT m, int n,
      PRIMME_INT ldx, int i0, dummy_type_sprimme *y, int *ly);
int Num_copy_compact_trimatrix_sprimme(dummy_type_sprimme *x, PRIMME_INT m, int n, int i0,
      dummy_type_sprimme *y, int ldy);
int compute_submatrix_sprimme(dummy_type_sprimme *X, int nX, int ldX, dummy_type_sprimme *H, int nH,
      int ldH, int isherm, dummy_type_sprimme *R, int ldR, primme_context ctx);
int Num_copy_matrix_columns_sprimme(dummy_type_sprimme *x, PRIMME_INT m, int *xin, int n,
                                     PRIMME_INT ldx, dummy_type_sprimme *y, int *yin,
                                     PRIMME_INT ldy, primme_context ctx);
int Num_copy_matrix_rows_sprimme(dummy_type_sprimme *x, int *xim, int m, int n,
                                     PRIMME_INT ldx, dummy_type_sprimme *y, int *yim,
                                     PRIMME_INT ldy, primme_context ctx);
int permute_vecs_sprimme(dummy_type_sprimme *vecs, PRIMME_INT m, int n, PRIMME_INT ld,
                         int *perm_, primme_context ctx);
dummy_type_sprimme* Num_compact_vecs_sprimme(dummy_type_sprimme *vecs, PRIMME_INT m, int n,
      PRIMME_INT ld, int *perm, dummy_type_sprimme *work, PRIMME_INT ldwork,
      int avoidCopy, primme_context ctx);
int Num_scale_matrix_sprimme(dummy_type_sprimme *x, PRIMME_INT m, PRIMME_INT n,
      PRIMME_INT ldx, dummy_type_sprimme *s, dummy_type_sprimme *y, PRIMME_INT ldy, primme_context ctx);
int Num_matrix_astype_cprimme(void *x, PRIMME_INT m, PRIMME_INT n,
      PRIMME_INT ldx, primme_op_datatype xt, void **y, PRIMME_INT *ldy,
      primme_op_datatype yt, int do_alloc, int do_copy, primme_context ctx);
int Num_copy_matrix_astype_cprimme(void *x, PRIMME_INT xm0, PRIMME_INT xn0,
      PRIMME_INT m, PRIMME_INT n, PRIMME_INT ldx, primme_op_datatype xt,
      void *y, PRIMME_INT ym0, PRIMME_INT yn0, PRIMME_INT ldy,
      primme_op_datatype yt, primme_context ctx);
int Num_sizeof_cprimme(primme_op_datatype t, size_t *s);
int Num_machine_epsilon_cprimme(primme_op_datatype t, double *eps);
int Num_copy_matrix_conj_cprimme(dummy_type_cprimme *x, PRIMME_INT m, PRIMME_INT n,
      PRIMME_INT ldx, dummy_type_cprimme *y, PRIMME_INT ldy, primme_context ctx);
int Num_copy_trimatrix_cprimme(dummy_type_cprimme *x, int m, int n, int ldx, int ul,
      int i0, dummy_type_cprimme *y, int ldy, int zero);
int Num_copy_trimatrix_compact_cprimme(dummy_type_cprimme *x, PRIMME_INT m, int n,
      PRIMME_INT ldx, int i0, dummy_type_cprimme *y, int *ly);
int Num_copy_compact_trimatrix_cprimme(dummy_type_cprimme *x, PRIMME_INT m, int n, int i0,
      dummy_type_cprimme *y, int ldy);
int compute_submatrix_cprimme(dummy_type_cprimme *X, int nX, int ldX, dummy_type_cprimme *H, int nH,
      int ldH, int isherm, dummy_type_cprimme *R, int ldR, primme_context ctx);
int Num_copy_matrix_columns_cprimme(dummy_type_cprimme *x, PRIMME_INT m, int *xin, int n,
                                     PRIMME_INT ldx, dummy_type_cprimme *y, int *yin,
                                     PRIMME_INT ldy, primme_context ctx);
int Num_copy_matrix_rows_cprimme(dummy_type_cprimme *x, int *xim, int m, int n,
                                     PRIMME_INT ldx, dummy_type_cprimme *y, int *yim,
                                     PRIMME_INT ldy, primme_context ctx);
int permute_vecs_cprimme(dummy_type_cprimme *vecs, PRIMME_INT m, int n, PRIMME_INT ld,
                         int *perm_, primme_context ctx);
dummy_type_cprimme* Num_compact_vecs_cprimme(dummy_type_cprimme *vecs, PRIMME_INT m, int n,
      PRIMME_INT ld, int *perm, dummy_type_cprimme *work, PRIMME_INT ldwork,
      int avoidCopy, primme_context ctx);
int Num_scale_matrix_cprimme(dummy_type_cprimme *x, PRIMME_INT m, PRIMME_INT n,
      PRIMME_INT ldx, dummy_type_sprimme *s, dummy_type_cprimme *y, PRIMME_INT ldy, primme_context ctx);
int Num_matrix_astype_zprimme(void *x, PRIMME_INT m, PRIMME_INT n,
      PRIMME_INT ldx, primme_op_datatype xt, void **y, PRIMME_INT *ldy,
      primme_op_datatype yt, int do_alloc, int do_copy, primme_context ctx);
int Num_copy_matrix_astype_zprimme(void *x, PRIMME_INT xm0, PRIMME_INT xn0,
      PRIMME_INT m, PRIMME_INT n, PRIMME_INT ldx, primme_op_datatype xt,
      void *y, PRIMME_INT ym0, PRIMME_INT yn0, PRIMME_INT ldy,
      primme_op_datatype yt, primme_context ctx);
int Num_sizeof_zprimme(primme_op_datatype t, size_t *s);
int Num_machine_epsilon_zprimme(primme_op_datatype t, double *eps);
int Num_copy_matrix_conj_zprimme(dummy_type_zprimme *x, PRIMME_INT m, PRIMME_INT n,
      PRIMME_INT ldx, dummy_type_zprimme *y, PRIMME_INT ldy, primme_context ctx);
int Num_copy_trimatrix_zprimme(dummy_type_zprimme *x, int m, int n, int ldx, int ul,
      int i0, dummy_type_zprimme *y, int ldy, int zero);
int Num_copy_trimatrix_compact_zprimme(dummy_type_zprimme *x, PRIMME_INT m, int n,
      PRIMME_INT ldx, int i0, dummy_type_zprimme *y, int *ly);
int Num_copy_compact_trimatrix_zprimme(dummy_type_zprimme *x, PRIMME_INT m, int n, int i0,
      dummy_type_zprimme *y, int ldy);
int compute_submatrix_zprimme(dummy_type_zprimme *X, int nX, int ldX, dummy_type_zprimme *H, int nH,
      int ldH, int isherm, dummy_type_zprimme *R, int ldR, primme_context ctx);
int Num_copy_matrix_columns_zprimme(dummy_type_zprimme *x, PRIMME_INT m, int *xin, int n,
                                     PRIMME_INT ldx, dummy_type_zprimme *y, int *yin,
                                     PRIMME_INT ldy, primme_context ctx);
int Num_copy_matrix_rows_zprimme(dummy_type_zprimme *x, int *xim, int m, int n,
                                     PRIMME_INT ldx, dummy_type_zprimme *y, int *yim,
                                     PRIMME_INT ldy, primme_context ctx);
int permute_vecs_zprimme(dummy_type_zprimme *vecs, PRIMME_INT m, int n, PRIMME_INT ld,
                         int *perm_, primme_context ctx);
dummy_type_zprimme* Num_compact_vecs_zprimme(dummy_type_zprimme *vecs, PRIMME_INT m, int n,
      PRIMME_INT ld, int *perm, dummy_type_zprimme *work, PRIMME_INT ldwork,
      int avoidCopy, primme_context ctx);
int Num_scale_matrix_zprimme(dummy_type_zprimme *x, PRIMME_INT m, PRIMME_INT n,
      PRIMME_INT ldx, dummy_type_dprimme *s, dummy_type_zprimme *y, PRIMME_INT ldy, primme_context ctx);
int Num_matrix_astype_magma_hprimme(void *x, PRIMME_INT m, PRIMME_INT n,
      PRIMME_INT ldx, primme_op_datatype xt, void **y, PRIMME_INT *ldy,
      primme_op_datatype yt, int do_alloc, int do_copy, primme_context ctx);
int Num_copy_matrix_astype_magma_hprimme(void *x, PRIMME_INT xm0, PRIMME_INT xn0,
      PRIMME_INT m, PRIMME_INT n, PRIMME_INT ldx, primme_op_datatype xt,
      void *y, PRIMME_INT ym0, PRIMME_INT yn0, PRIMME_INT ldy,
      primme_op_datatype yt, primme_context ctx);
int Num_sizeof_magma_hprimme(primme_op_datatype t, size_t *s);
int Num_machine_epsilon_magma_hprimme(primme_op_datatype t, double *eps);
int Num_copy_matrix_columns_magma_hprimme(dummy_type_magma_hprimme *x, PRIMME_INT m, int *xin, int n,
                                     PRIMME_INT ldx, dummy_type_magma_hprimme *y, int *yin,
                                     PRIMME_INT ldy, primme_context ctx);
int Num_copy_matrix_rows_magma_hprimme(dummy_type_magma_hprimme *x, int *xim, int m, int n,
                                     PRIMME_INT ldx, dummy_type_magma_hprimme *y, int *yim,
                                     PRIMME_INT ldy, primme_context ctx);
int permute_vecs_magma_hprimme(dummy_type_magma_hprimme *vecs, PRIMME_INT m, int n, PRIMME_INT ld,
                         int *perm_, primme_context ctx);
dummy_type_magma_hprimme* Num_compact_vecs_magma_hprimme(dummy_type_magma_hprimme *vecs, PRIMME_INT m, int n,
      PRIMME_INT ld, int *perm, dummy_type_magma_hprimme *work, PRIMME_INT ldwork,
      int avoidCopy, primme_context ctx);
int Num_scale_matrix_magma_hprimme(dummy_type_magma_hprimme *x, PRIMME_INT m, PRIMME_INT n,
      PRIMME_INT ldx, dummy_type_sprimme *s, dummy_type_magma_hprimme *y, PRIMME_INT ldy, primme_context ctx);
int Num_matrix_astype_magma_kprimme(void *x, PRIMME_INT m, PRIMME_INT n,
      PRIMME_INT ldx, primme_op_datatype xt, void **y, PRIMME_INT *ldy,
      primme_op_datatype yt, int do_alloc, int do_copy, primme_context ctx);
int Num_copy_matrix_astype_magma_kprimme(void *x, PRIMME_INT xm0, PRIMME_INT xn0,
      PRIMME_INT m, PRIMME_INT n, PRIMME_INT ldx, primme_op_datatype xt,
      void *y, PRIMME_INT ym0, PRIMME_INT yn0, PRIMME_INT ldy,
      primme_op_datatype yt, primme_context ctx);
int Num_sizeof_magma_kprimme(primme_op_datatype t, size_t *s);
int Num_machine_epsilon_magma_kprimme(primme_op_datatype t, double *eps);
int Num_copy_matrix_columns_magma_kprimme(dummy_type_magma_kprimme *x, PRIMME_INT m, int *xin, int n,
                                     PRIMME_INT ldx, dummy_type_magma_kprimme *y, int *yin,
                                     PRIMME_INT ldy, primme_context ctx);
int Num_copy_matrix_rows_magma_kprimme(dummy_type_magma_kprimme *x, int *xim, int m, int n,
                                     PRIMME_INT ldx, dummy_type_magma_kprimme *y, int *yim,
                                     PRIMME_INT ldy, primme_context ctx);
int permute_vecs_magma_kprimme(dummy_type_magma_kprimme *vecs, PRIMME_INT m, int n, PRIMME_INT ld,
                         int *perm_, primme_context ctx);
dummy_type_magma_kprimme* Num_compact_vecs_magma_kprimme(dummy_type_magma_kprimme *vecs, PRIMME_INT m, int n,
      PRIMME_INT ld, int *perm, dummy_type_magma_kprimme *work, PRIMME_INT ldwork,
      int avoidCopy, primme_context ctx);
int Num_scale_matrix_magma_kprimme(dummy_type_magma_kprimme *x, PRIMME_INT m, PRIMME_INT n,
      PRIMME_INT ldx, dummy_type_sprimme *s, dummy_type_magma_kprimme *y, PRIMME_INT ldy, primme_context ctx);
int Num_matrix_astype_magma_sprimme(void *x, PRIMME_INT m, PRIMME_INT n,
      PRIMME_INT ldx, primme_op_datatype xt, void **y, PRIMME_INT *ldy,
      primme_op_datatype yt, int do_alloc, int do_copy, primme_context ctx);
int Num_copy_matrix_astype_magma_sprimme(void *x, PRIMME_INT xm0, PRIMME_INT xn0,
      PRIMME_INT m, PRIMME_INT n, PRIMME_INT ldx, primme_op_datatype xt,
      void *y, PRIMME_INT ym0, PRIMME_INT yn0, PRIMME_INT ldy,
      primme_op_datatype yt, primme_context ctx);
int Num_sizeof_magma_sprimme(primme_op_datatype t, size_t *s);
int Num_machine_epsilon_magma_sprimme(primme_op_datatype t, double *eps);
int Num_copy_matrix_columns_magma_sprimme(dummy_type_magma_sprimme *x, PRIMME_INT m, int *xin, int n,
                                     PRIMME_INT ldx, dummy_type_magma_sprimme *y, int *yin,
                                     PRIMME_INT ldy, primme_context ctx);
int Num_copy_matrix_rows_magma_sprimme(dummy_type_magma_sprimme *x, int *xim, int m, int n,
                                     PRIMME_INT ldx, dummy_type_magma_sprimme *y, int *yim,
                                     PRIMME_INT ldy, primme_context ctx);
int permute_vecs_magma_sprimme(dummy_type_magma_sprimme *vecs, PRIMME_INT m, int n, PRIMME_INT ld,
                         int *perm_, primme_context ctx);
dummy_type_magma_sprimme* Num_compact_vecs_magma_sprimme(dummy_type_magma_sprimme *vecs, PRIMME_INT m, int n,
      PRIMME_INT ld, int *perm, dummy_type_magma_sprimme *work, PRIMME_INT ldwork,
      int avoidCopy, primme_context ctx);
int Num_scale_matrix_magma_sprimme(dummy_type_magma_sprimme *x, PRIMME_INT m, PRIMME_INT n,
      PRIMME_INT ldx, dummy_type_sprimme *s, dummy_type_magma_sprimme *y, PRIMME_INT ldy, primme_context ctx);
int Num_matrix_astype_magma_cprimme(void *x, PRIMME_INT m, PRIMME_INT n,
      PRIMME_INT ldx, primme_op_datatype xt, void **y, PRIMME_INT *ldy,
      primme_op_datatype yt, int do_alloc, int do_copy, primme_context ctx);
int Num_copy_matrix_astype_magma_cprimme(void *x, PRIMME_INT xm0, PRIMME_INT xn0,
      PRIMME_INT m, PRIMME_INT n, PRIMME_INT ldx, primme_op_datatype xt,
      void *y, PRIMME_INT ym0, PRIMME_INT yn0, PRIMME_INT ldy,
      primme_op_datatype yt, primme_context ctx);
int Num_sizeof_magma_cprimme(primme_op_datatype t, size_t *s);
int Num_machine_epsilon_magma_cprimme(primme_op_datatype t, double *eps);
int Num_copy_matrix_columns_magma_cprimme(dummy_type_magma_cprimme *x, PRIMME_INT m, int *xin, int n,
                                     PRIMME_INT ldx, dummy_type_magma_cprimme *y, int *yin,
                                     PRIMME_INT ldy, primme_context ctx);
int Num_copy_matrix_rows_magma_cprimme(dummy_type_magma_cprimme *x, int *xim, int m, int n,
                                     PRIMME_INT ldx, dummy_type_magma_cprimme *y, int *yim,
                                     PRIMME_INT ldy, primme_context ctx);
int permute_vecs_magma_cprimme(dummy_type_magma_cprimme *vecs, PRIMME_INT m, int n, PRIMME_INT ld,
                         int *perm_, primme_context ctx);
dummy_type_magma_cprimme* Num_compact_vecs_magma_cprimme(dummy_type_magma_cprimme *vecs, PRIMME_INT m, int n,
      PRIMME_INT ld, int *perm, dummy_type_magma_cprimme *work, PRIMME_INT ldwork,
      int avoidCopy, primme_context ctx);
int Num_scale_matrix_magma_cprimme(dummy_type_magma_cprimme *x, PRIMME_INT m, PRIMME_INT n,
      PRIMME_INT ldx, dummy_type_sprimme *s, dummy_type_magma_cprimme *y, PRIMME_INT ldy, primme_context ctx);
int Num_matrix_astype_magma_dprimme(void *x, PRIMME_INT m, PRIMME_INT n,
      PRIMME_INT ldx, primme_op_datatype xt, void **y, PRIMME_INT *ldy,
      primme_op_datatype yt, int do_alloc, int do_copy, primme_context ctx);
int Num_copy_matrix_astype_magma_dprimme(void *x, PRIMME_INT xm0, PRIMME_INT xn0,
      PRIMME_INT m, PRIMME_INT n, PRIMME_INT ldx, primme_op_datatype xt,
      void *y, PRIMME_INT ym0, PRIMME_INT yn0, PRIMME_INT ldy,
      primme_op_datatype yt, primme_context ctx);
int Num_sizeof_magma_dprimme(primme_op_datatype t, size_t *s);
int Num_machine_epsilon_magma_dprimme(primme_op_datatype t, double *eps);
int Num_copy_matrix_columns_magma_dprimme(dummy_type_magma_dprimme *x, PRIMME_INT m, int *xin, int n,
                                     PRIMME_INT ldx, dummy_type_magma_dprimme *y, int *yin,
                                     PRIMME_INT ldy, primme_context ctx);
int Num_copy_matrix_rows_magma_dprimme(dummy_type_magma_dprimme *x, int *xim, int m, int n,
                                     PRIMME_INT ldx, dummy_type_magma_dprimme *y, int *yim,
                                     PRIMME_INT ldy, primme_context ctx);
int permute_vecs_magma_dprimme(dummy_type_magma_dprimme *vecs, PRIMME_INT m, int n, PRIMME_INT ld,
                         int *perm_, primme_context ctx);
dummy_type_magma_dprimme* Num_compact_vecs_magma_dprimme(dummy_type_magma_dprimme *vecs, PRIMME_INT m, int n,
      PRIMME_INT ld, int *perm, dummy_type_magma_dprimme *work, PRIMME_INT ldwork,
      int avoidCopy, primme_context ctx);
int Num_scale_matrix_magma_dprimme(dummy_type_magma_dprimme *x, PRIMME_INT m, PRIMME_INT n,
      PRIMME_INT ldx, dummy_type_dprimme *s, dummy_type_magma_dprimme *y, PRIMME_INT ldy, primme_context ctx);
int Num_matrix_astype_magma_zprimme(void *x, PRIMME_INT m, PRIMME_INT n,
      PRIMME_INT ldx, primme_op_datatype xt, void **y, PRIMME_INT *ldy,
      primme_op_datatype yt, int do_alloc, int do_copy, primme_context ctx);
int Num_copy_matrix_astype_magma_zprimme(void *x, PRIMME_INT xm0, PRIMME_INT xn0,
      PRIMME_INT m, PRIMME_INT n, PRIMME_INT ldx, primme_op_datatype xt,
      void *y, PRIMME_INT ym0, PRIMME_INT yn0, PRIMME_INT ldy,
      primme_op_datatype yt, primme_context ctx);
int Num_sizeof_magma_zprimme(primme_op_datatype t, size_t *s);
int Num_machine_epsilon_magma_zprimme(primme_op_datatype t, double *eps);
int Num_copy_matrix_columns_magma_zprimme(dummy_type_magma_zprimme *x, PRIMME_INT m, int *xin, int n,
                                     PRIMME_INT ldx, dummy_type_magma_zprimme *y, int *yin,
                                     PRIMME_INT ldy, primme_context ctx);
int Num_copy_matrix_rows_magma_zprimme(dummy_type_magma_zprimme *x, int *xim, int m, int n,
                                     PRIMME_INT ldx, dummy_type_magma_zprimme *y, int *yim,
                                     PRIMME_INT ldy, primme_context ctx);
int permute_vecs_magma_zprimme(dummy_type_magma_zprimme *vecs, PRIMME_INT m, int n, PRIMME_INT ld,
                         int *perm_, primme_context ctx);
dummy_type_magma_zprimme* Num_compact_vecs_magma_zprimme(dummy_type_magma_zprimme *vecs, PRIMME_INT m, int n,
      PRIMME_INT ld, int *perm, dummy_type_magma_zprimme *work, PRIMME_INT ldwork,
      int avoidCopy, primme_context ctx);
int Num_scale_matrix_magma_zprimme(dummy_type_magma_zprimme *x, PRIMME_INT m, PRIMME_INT n,
      PRIMME_INT ldx, dummy_type_dprimme *s, dummy_type_magma_zprimme *y, PRIMME_INT ldy, primme_context ctx);
int Num_matrix_astype_cublas_hprimme(void *x, PRIMME_INT m, PRIMME_INT n,
      PRIMME_INT ldx, primme_op_datatype xt, void **y, PRIMME_INT *ldy,
      primme_op_datatype yt, int do_alloc, int do_copy, primme_context ctx);
int Num_copy_matrix_astype_cublas_hprimme(void *x, PRIMME_INT xm0, PRIMME_INT xn0,
      PRIMME_INT m, PRIMME_INT n, PRIMME_INT ldx, primme_op_datatype xt,
      void *y, PRIMME_INT ym0, PRIMME_INT yn0, PRIMME_INT ldy,
      primme_op_datatype yt, primme_context ctx);
int Num_sizeof_cublas_hprimme(primme_op_datatype t, size_t *s);
int Num_machine_epsilon_cublas_hprimme(primme_op_datatype t, double *eps);
int Num_copy_matrix_columns_cublas_hprimme(dummy_type_cublas_hprimme *x, PRIMME_INT m, int *xin, int n,
                                     PRIMME_INT ldx, dummy_type_cublas_hprimme *y, int *yin,
                                     PRIMME_INT ldy, primme_context ctx);
int Num_copy_matrix_rows_cublas_hprimme(dummy_type_cublas_hprimme *x, int *xim, int m, int n,
                                     PRIMME_INT ldx, dummy_type_cublas_hprimme *y, int *yim,
                                     PRIMME_INT ldy, primme_context ctx);
int permute_vecs_cublas_hprimme(dummy_type_cublas_hprimme *vecs, PRIMME_INT m, int n, PRIMME_INT ld,
                         int *perm_, primme_context ctx);
dummy_type_cublas_hprimme* Num_compact_vecs_cublas_hprimme(dummy_type_cublas_hprimme *vecs, PRIMME_INT m, int n,
      PRIMME_INT ld, int *perm, dummy_type_cublas_hprimme *work, PRIMME_INT ldwork,
      int avoidCopy, primme_context ctx);
int Num_scale_matrix_cublas_hprimme(dummy_type_cublas_hprimme *x, PRIMME_INT m, PRIMME_INT n,
      PRIMME_INT ldx, dummy_type_sprimme *s, dummy_type_cublas_hprimme *y, PRIMME_INT ldy, primme_context ctx);
int Num_matrix_astype_cublas_kprimme(void *x, PRIMME_INT m, PRIMME_INT n,
      PRIMME_INT ldx, primme_op_datatype xt, void **y, PRIMME_INT *ldy,
      primme_op_datatype yt, int do_alloc, int do_copy, primme_context ctx);
int Num_copy_matrix_astype_cublas_kprimme(void *x, PRIMME_INT xm0, PRIMME_INT xn0,
      PRIMME_INT m, PRIMME_INT n, PRIMME_INT ldx, primme_op_datatype xt,
      void *y, PRIMME_INT ym0, PRIMME_INT yn0, PRIMME_INT ldy,
      primme_op_datatype yt, primme_context ctx);
int Num_sizeof_cublas_kprimme(primme_op_datatype t, size_t *s);
int Num_machine_epsilon_cublas_kprimme(primme_op_datatype t, double *eps);
int Num_copy_matrix_columns_cublas_kprimme(dummy_type_cublas_kprimme *x, PRIMME_INT m, int *xin, int n,
                                     PRIMME_INT ldx, dummy_type_cublas_kprimme *y, int *yin,
                                     PRIMME_INT ldy, primme_context ctx);
int Num_copy_matrix_rows_cublas_kprimme(dummy_type_cublas_kprimme *x, int *xim, int m, int n,
                                     PRIMME_INT ldx, dummy_type_cublas_kprimme *y, int *yim,
                                     PRIMME_INT ldy, primme_context ctx);
int permute_vecs_cublas_kprimme(dummy_type_cublas_kprimme *vecs, PRIMME_INT m, int n, PRIMME_INT ld,
                         int *perm_, primme_context ctx);
dummy_type_cublas_kprimme* Num_compact_vecs_cublas_kprimme(dummy_type_cublas_kprimme *vecs, PRIMME_INT m, int n,
      PRIMME_INT ld, int *perm, dummy_type_cublas_kprimme *work, PRIMME_INT ldwork,
      int avoidCopy, primme_context ctx);
int Num_scale_matrix_cublas_kprimme(dummy_type_cublas_kprimme *x, PRIMME_INT m, PRIMME_INT n,
      PRIMME_INT ldx, dummy_type_sprimme *s, dummy_type_cublas_kprimme *y, PRIMME_INT ldy, primme_context ctx);
int Num_matrix_astype_cublas_sprimme(void *x, PRIMME_INT m, PRIMME_INT n,
      PRIMME_INT ldx, primme_op_datatype xt, void **y, PRIMME_INT *ldy,
      primme_op_datatype yt, int do_alloc, int do_copy, primme_context ctx);
int Num_copy_matrix_astype_cublas_sprimme(void *x, PRIMME_INT xm0, PRIMME_INT xn0,
      PRIMME_INT m, PRIMME_INT n, PRIMME_INT ldx, primme_op_datatype xt,
      void *y, PRIMME_INT ym0, PRIMME_INT yn0, PRIMME_INT ldy,
      primme_op_datatype yt, primme_context ctx);
int Num_sizeof_cublas_sprimme(primme_op_datatype t, size_t *s);
int Num_machine_epsilon_cublas_sprimme(primme_op_datatype t, double *eps);
int Num_copy_matrix_columns_cublas_sprimme(dummy_type_cublas_sprimme *x, PRIMME_INT m, int *xin, int n,
                                     PRIMME_INT ldx, dummy_type_cublas_sprimme *y, int *yin,
                                     PRIMME_INT ldy, primme_context ctx);
int Num_copy_matrix_rows_cublas_sprimme(dummy_type_cublas_sprimme *x, int *xim, int m, int n,
                                     PRIMME_INT ldx, dummy_type_cublas_sprimme *y, int *yim,
                                     PRIMME_INT ldy, primme_context ctx);
int permute_vecs_cublas_sprimme(dummy_type_cublas_sprimme *vecs, PRIMME_INT m, int n, PRIMME_INT ld,
                         int *perm_, primme_context ctx);
dummy_type_cublas_sprimme* Num_compact_vecs_cublas_sprimme(dummy_type_cublas_sprimme *vecs, PRIMME_INT m, int n,
      PRIMME_INT ld, int *perm, dummy_type_cublas_sprimme *work, PRIMME_INT ldwork,
      int avoidCopy, primme_context ctx);
int Num_scale_matrix_cublas_sprimme(dummy_type_cublas_sprimme *x, PRIMME_INT m, PRIMME_INT n,
      PRIMME_INT ldx, dummy_type_sprimme *s, dummy_type_cublas_sprimme *y, PRIMME_INT ldy, primme_context ctx);
int Num_matrix_astype_cublas_cprimme(void *x, PRIMME_INT m, PRIMME_INT n,
      PRIMME_INT ldx, primme_op_datatype xt, void **y, PRIMME_INT *ldy,
      primme_op_datatype yt, int do_alloc, int do_copy, primme_context ctx);
int Num_copy_matrix_astype_cublas_cprimme(void *x, PRIMME_INT xm0, PRIMME_INT xn0,
      PRIMME_INT m, PRIMME_INT n, PRIMME_INT ldx, primme_op_datatype xt,
      void *y, PRIMME_INT ym0, PRIMME_INT yn0, PRIMME_INT ldy,
      primme_op_datatype yt, primme_context ctx);
int Num_sizeof_cublas_cprimme(primme_op_datatype t, size_t *s);
int Num_machine_epsilon_cublas_cprimme(primme_op_datatype t, double *eps);
int Num_copy_matrix_columns_cublas_cprimme(dummy_type_cublas_cprimme *x, PRIMME_INT m, int *xin, int n,
                                     PRIMME_INT ldx, dummy_type_cublas_cprimme *y, int *yin,
                                     PRIMME_INT ldy, primme_context ctx);
int Num_copy_matrix_rows_cublas_cprimme(dummy_type_cublas_cprimme *x, int *xim, int m, int n,
                                     PRIMME_INT ldx, dummy_type_cublas_cprimme *y, int *yim,
                                     PRIMME_INT ldy, primme_context ctx);
int permute_vecs_cublas_cprimme(dummy_type_cublas_cprimme *vecs, PRIMME_INT m, int n, PRIMME_INT ld,
                         int *perm_, primme_context ctx);
dummy_type_cublas_cprimme* Num_compact_vecs_cublas_cprimme(dummy_type_cublas_cprimme *vecs, PRIMME_INT m, int n,
      PRIMME_INT ld, int *perm, dummy_type_cublas_cprimme *work, PRIMME_INT ldwork,
      int avoidCopy, primme_context ctx);
int Num_scale_matrix_cublas_cprimme(dummy_type_cublas_cprimme *x, PRIMME_INT m, PRIMME_INT n,
      PRIMME_INT ldx, dummy_type_sprimme *s, dummy_type_cublas_cprimme *y, PRIMME_INT ldy, primme_context ctx);
int Num_matrix_astype_cublas_dprimme(void *x, PRIMME_INT m, PRIMME_INT n,
      PRIMME_INT ldx, primme_op_datatype xt, void **y, PRIMME_INT *ldy,
      primme_op_datatype yt, int do_alloc, int do_copy, primme_context ctx);
int Num_copy_matrix_astype_cublas_dprimme(void *x, PRIMME_INT xm0, PRIMME_INT xn0,
      PRIMME_INT m, PRIMME_INT n, PRIMME_INT ldx, primme_op_datatype xt,
      void *y, PRIMME_INT ym0, PRIMME_INT yn0, PRIMME_INT ldy,
      primme_op_datatype yt, primme_context ctx);
int Num_sizeof_cublas_dprimme(primme_op_datatype t, size_t *s);
int Num_machine_epsilon_cublas_dprimme(primme_op_datatype t, double *eps);
int Num_copy_matrix_columns_cublas_dprimme(dummy_type_cublas_dprimme *x, PRIMME_INT m, int *xin, int n,
                                     PRIMME_INT ldx, dummy_type_cublas_dprimme *y, int *yin,
                                     PRIMME_INT ldy, primme_context ctx);
int Num_copy_matrix_rows_cublas_dprimme(dummy_type_cublas_dprimme *x, int *xim, int m, int n,
                                     PRIMME_INT ldx, dummy_type_cublas_dprimme *y, int *yim,
                                     PRIMME_INT ldy, primme_context ctx);
int permute_vecs_cublas_dprimme(dummy_type_cublas_dprimme *vecs, PRIMME_INT m, int n, PRIMME_INT ld,
                         int *perm_, primme_context ctx);
dummy_type_cublas_dprimme* Num_compact_vecs_cublas_dprimme(dummy_type_cublas_dprimme *vecs, PRIMME_INT m, int n,
      PRIMME_INT ld, int *perm, dummy_type_cublas_dprimme *work, PRIMME_INT ldwork,
      int avoidCopy, primme_context ctx);
int Num_scale_matrix_cublas_dprimme(dummy_type_cublas_dprimme *x, PRIMME_INT m, PRIMME_INT n,
      PRIMME_INT ldx, dummy_type_dprimme *s, dummy_type_cublas_dprimme *y, PRIMME_INT ldy, primme_context ctx);
int Num_matrix_astype_cublas_zprimme(void *x, PRIMME_INT m, PRIMME_INT n,
      PRIMME_INT ldx, primme_op_datatype xt, void **y, PRIMME_INT *ldy,
      primme_op_datatype yt, int do_alloc, int do_copy, primme_context ctx);
int Num_copy_matrix_astype_cublas_zprimme(void *x, PRIMME_INT xm0, PRIMME_INT xn0,
      PRIMME_INT m, PRIMME_INT n, PRIMME_INT ldx, primme_op_datatype xt,
      void *y, PRIMME_INT ym0, PRIMME_INT yn0, PRIMME_INT ldy,
      primme_op_datatype yt, primme_context ctx);
int Num_sizeof_cublas_zprimme(primme_op_datatype t, size_t *s);
int Num_machine_epsilon_cublas_zprimme(primme_op_datatype t, double *eps);
int Num_copy_matrix_columns_cublas_zprimme(dummy_type_cublas_zprimme *x, PRIMME_INT m, int *xin, int n,
                                     PRIMME_INT ldx, dummy_type_cublas_zprimme *y, int *yin,
                                     PRIMME_INT ldy, primme_context ctx);
int Num_copy_matrix_rows_cublas_zprimme(dummy_type_cublas_zprimme *x, int *xim, int m, int n,
                                     PRIMME_INT ldx, dummy_type_cublas_zprimme *y, int *yim,
                                     PRIMME_INT ldy, primme_context ctx);
int permute_vecs_cublas_zprimme(dummy_type_cublas_zprimme *vecs, PRIMME_INT m, int n, PRIMME_INT ld,
                         int *perm_, primme_context ctx);
dummy_type_cublas_zprimme* Num_compact_vecs_cublas_zprimme(dummy_type_cublas_zprimme *vecs, PRIMME_INT m, int n,
      PRIMME_INT ld, int *perm, dummy_type_cublas_zprimme *work, PRIMME_INT ldwork,
      int avoidCopy, primme_context ctx);
int Num_scale_matrix_cublas_zprimme(dummy_type_cublas_zprimme *x, PRIMME_INT m, PRIMME_INT n,
      PRIMME_INT ldx, dummy_type_dprimme *s, dummy_type_cublas_zprimme *y, PRIMME_INT ldy, primme_context ctx);
#endif
